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!