4D Language – Verbesserungen beim String-Vergleich

Die 4D Sprache bietet mehr als 20 Befehle zur Bearbeitung von Strings. Und mit 4D v18 R6 führt 4D einen neuen Befehl ein: Compare strings. Und noch ein weiterer Befehl wurde verbessert: Position. Beide Befehle ermöglichen es Ihnen, Optionen für genauere Ergebnisse zu verwenden. Lernen Sie mehr!

HDI: Verbesserungen beim String-Vergleich.

Standort

Der bekannte Befehl Position ermöglicht es, die Position von Text innerhalb eines anderen Textes zu finden. Er bietet nur zwei Optionen: Startposition und exakte Übereinstimmung, basierend auf dem Zeichencode. Ab 4D v18 R6 haben Sie nun mehr Vergleichsmöglichkeiten wie „case sensitive“ oder „accent sensitive“. Auch die japanische Sprache wurde nicht vergessen! Hiragana/Katakana und Zeichenbreite sind ebenfalls als Suchoptionen verfügbar. Es gibt auch die Möglichkeit, nach dem „ganzen Wort“ zu suchen.

Fangen wir von vorne an.

Die erste Option ist „streng“. Sie berücksichtigt Großschreibung, Akzente usw. sowie sprachliche Besonderheiten. Im Deutschen kann man zum Beispiel davon ausgehen, dass das „ß“ mit dem „ss“ identisch ist. Im Französischen sind œ und æ gleichbedeutend mit „oe“ und „ae“.

Die anderen verfügbaren Optionen sprechen für sich selbst. Mit „case insensitive“ und „accent insensitive“ können Sie Akzente und Großbuchstaben ausblenden. Bei Japanisch ignoriert „kana insensitive“ die Unterschiede zwischen Katakana und Hiragana, und „width insensitive“ ignoriert die Zeichenbreiten.

Die letzte (sehr nützliche) Option erlaubt es, Teile von Wörtern zu ignorieren, um nur vollständige (ganze) Wörter zu finden.

Ein paar Beispiele

$p:=Position ("home"; "Ich habe meine Hausaufgaben gemacht";0;$length;sk whole word")
// returns zero ! home is not a whole word in this case.

$p:=Position ("Zuhause"; "Ich habe meine Hausaufgaben gemacht";0;$length;sk case insensitive")
// returns 16; the capital "H" is considered equal to letter "h"

$p:=Position ("Joao"; "Ich habe einen Freund namens João";0;$length;sk accent insensitive")
// returns 23; the accentuated letter "ã" is considered equal to letter "a"

Diese Optionen können kumuliert werden!

$p:=Position ("joao"; "Ich habe einen Freund namens João";0;$Länge;sk case insensitive + sk accent insensitive")
// also returns 23; the accentuated letter "ã" is considered equal to letter "a" AND letter "J" is considered equal to letter "j"

Zeichenketten vergleichen

Der neue Befehl Compare strings ermöglicht den Vergleich von Zeichenketten mit denselben Optionen, die auch dem Befehl Position hinzugefügt wurden. Dieser Befehl basiert auf der in den Datenbankeinstellungen definierten Sprache. Dies kann sehr nützlich sein, um z. B. bestimmte Sortierungen zu ermöglichen.

Der Befehl gibt zurück:

  • Null (0), wenn die Zeichenketten als identisch angesehen werden (basierend auf den als Optionen übergebenen Kriterien)
  • einen negativen oder positiven Wert, wenn die erste Zeichenkette vor oder nach der zweiten sortiert werden soll.

Ein paar Beispiele

Im folgenden Beispiel gibt $result „1“ zurück, weil „a“ als größer als „A“ angesehen wird. Nicht wegen seiner Größe, sondern wegen seines Zeichencodes!
Zur Erinnerung: sk char code macht den Vergleich unabhängig von der Sprache.

$result:=Compare strings("alpha"; "Alpha"; sk char codes)

Diesmal gibt $result „0“ zurück, weil Groß- und Kleinschreibung dank der Option sk case insensitive als identisch betrachtet werden müssen.
Zur Erinnerung: sk case insensitive macht den Vergleich von der Sprache abhängig.

$result:=Compare strings("ein Baum"; "Ein Baum"; sk case insensitive)

Schlussfolgerung

Schauen Sie sich den obigen HDI an und sehen Sie, wie diese neuen Optionen verwendet werden können.

Wenn Sie bestimmte Suchvorgänge oder Sortierungen in Ihren Daten durchführen müssen, werden sie sicherlich sehr nützlich für Sie sein. Mehr über diese Befehle finden Sie in der Dokumentation: compare strings und position.

Und beteiligen Sie sich an der Diskussion im 4D Forum!

Roland Lannuzel
- Product Owner & 4D Experte - Nach seinem Studium der Elektronik arbeitete Roland als Entwickler und Berater in der industriellen IT-Branche, wo er Lösungen für Kunden mit einer Vielzahl von Datenbanken und Technologien entwickelte. In den späten 80er Jahren verliebte er sich in 4D und setzte es bei der Entwicklung von Geschäftsanwendungen wie Buchhaltungs-, Abrechnungs- und E-Mail-Systemen ein. 1997 trat er schließlich in das Unternehmen ein und leistete einen wertvollen Beitrag, indem er Spezifikationen, Testtools und Demos entwarf, Schulungen durchführte und auf vielen Konferenzen für die 4D Community sprach. Er gestaltet die Zukunft von 4D aktiv mit, indem er neue Funktionen und Datenbankentwicklungstools definiert.