4D v19Position |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
4D v19
Position
|
Position ( Suchtext ; Quelltext {; Start {; LängeGefunden}}{; *} ) -> Funktionsergebnis | ||||||||
Parameter | Typ | Beschreibung | ||||||
Suchtext | String |
![]() |
Zu suchender Text | |||||
Quelltext | String |
![]() |
String, in dem gesucht wird | |||||
Start | Lange Ganzzahl |
![]() |
Stelle in String, wo die Suche beginnt | |||||
LängeGefunden | Lange Ganzzahl |
![]() |
Länge des gefundenen String | |||||
* | Operator |
![]() |
Mit Stern: Vergleich basiert auf Zeichen-Codes | |||||
Funktionsergebnis | Lange Ganzzahl |
![]() |
Stelle des ersten Auftretens | |||||
Position ( Suchtext ; Quelltext ; Start ; LängeGefunden ; Optionen ) -> Funktionsergebnis | ||||||||
Parameter | Typ | Beschreibung | ||||||
Suchtext | String |
![]() |
zu suchender Text | |||||
Quelltext | String |
![]() |
String, in dem gesucht wird | |||||
Start | Lange Ganzzahl |
![]() |
Stelle in String, wo die Suche beginnt | |||||
LängeGefunden | Lange Ganzzahl |
![]() |
Länge des gefundenen String | |||||
Optionen | Lange Ganzzahl |
![]() |
Suchkriterien | |||||
Funktionsergebnis | Lange Ganzzahl |
![]() |
Stelle des ersten Auftretens | |||||
Die Funktion Position gibt die Position des ersten Auftretens von Suchtext in Quelltext zurück. Enthält String nicht Suchtext, gibt der Befehl den Wert 0 zurück.
Findet Position ein Vorkommen von Suchtext, gibt sie die Position des ersten Zeichens in Quelltext zurück.
Fragen Sie innerhalb eines leeren String nach einer Position, gibt Position den Wert Null (0) zurück.
Die Suche beginnt standardmäßig mit dem ersten Zeichen von Quelltext. Mit dem Parameter Start können Sie das erste Zeichen angeben, mit dem die Suche in Quelltext beginnen soll.
Der Parameter LängeGefunden gibt die Länge der Zeichenkette zurück, die aktuell durch die Suche gefunden wird. Dieser Parameter ist zum korrekten Verwalten von Buchstaben mit einem oder mehr Zeichen notwendig, z.B. ß und ss, ae und æ, etc.
Ist der optionale Parameter * übergeben, gelten diese Buchstaben als ungleich (ae # æ). In diesem Modus ist LängeGefunden immer identisch mit der Länge von Suchtext (wenn ein Auftreten gefunden wurde).
Der Befehl führt standardmäßig globale Vergleiche aus, die linguistische Besonderheiten und Buchstaben, die als ein oder mehr Zeichen geschrieben werden (z.B. æ = ae) berücksichtigt. Dagegen ist er nicht diakritisch (a=A, a=á, etc.) und berücksichtigt nicht "ignorierbare" Zeichen (Unicode Spezifikation). Das sind alle Zeichen im Satz C0 Steuerung (U+0000 bis U+001F, Ascii Zeichen Steuerungssatz) mit Ausnahme der druckbaren Zeichen (U+0009 TAB, U+0010 LF, U+0011 VT, U+0012 FF und U+0013 CR).
Wollen Sie diese Funktionsweise ändern, können Sie folgendes übergeben:
Konstante | Wert | Kommentar |
sk case insensitive | 2 | Vergleicht Strings in der aktuellen Sprache der Daten ohne Unterscheidung zwischen Klein- und Großschreibung. Diakritische Zeichen werden berücksichtigt. Beispiel: "A" wird genauso gewertet wie "a", dagegen wird zwischen "a" und "à" unterschieden.
Kombinierbar mit:
|
sk char codes | 1 | Vergleicht Strings gemäß Zeichen-Codes. Berücksichtigt beim Vergleichen nicht die aktuellen Einstellungen der Sprache der Daten.
Kombinierbar mit: sk case insensitive Nur für Bereiche "a-z" oder "A-Z". (z.B. Alpha = alpha, aber Alpha # âlphà) |
sk diacritic insensitive | 4 | Vergleicht Strings gemäß der aktuellen Sprache der Daten, ignoriert diakritische Zeichen von Buchstaben. Beispiel: "a" wird genauso gewertet wie "à".
Kombinierbar mit:
|
sk kana insensitive | 8 | Für die japanische Sprache. Vergleicht Strings nach der Bedeutung (nicht nach der Schreibweise) in der aktuellen Sprache der Daten. Beispiel: "あ" wird genauso gewertet wie "ア". Diese Option impliziert die Konstante sk width insensitive (gilt als gesetzt), das gilt jedoch nicht für das Gegenteil.
Kombinierbar mit:
|
sk strict | 0 | Vergleicht Strings mit exakten Übereinstimmungen gemäß der aktuellen Sprache der Daten. Berücksichtigt beim Vergleichen Großschreibung und diakritische Zeichen in den meisten Fällen.
Kombinierbar mit:
|
sk whole word | 32 | Vergleicht Strings gemäß der aktuellen Sprache der Daten. Bewertet nur ganze Wörter, berücksichtigt nicht passende Strings innerhalb anderer Strings. Beispiel: "wo" im Wort "anderswo" wird nicht gewertet.
Kombinierbar mit: |
sk width insensitive | 16 | Für die japanische Sprache. Vergleicht Strings nach Zeichenbreite gemäß der aktuellen Sprache der Daten. Beispiel: "ア" wird genauso gewertet wie "ア".
Kombinierbar mit:
|
Weitere Informationen dazu finden Sie im Abschnitt Text-Vergleiche des Handbuchs Designmodus.
Der Joker (@) kann mit Position nicht benutzt werden. Übergeben Sie zum Beispiel in Suchtext "abc@", sucht die Funktion nach "abc@" und nicht nach "abc" plus beliebigen Zeichen.
Dieses Beispiel zeigt die Verwendung von Position. Die in den Kommentaren beschriebenen Ergebnisse werden der Variablen vlResult zugewiesen.
vlResult:=Position("ll";"Wille") ` vlResult ergibt 3
vlResult:=Position(vtText1;vtText2)
` Übergibt das erste Auftreten von vtText1 in vtText2
v1Result:=Position("Tag";"Montag ist der erste Tag";1) `gibt 4 zurück
v1Result:=Position("Tag";"Montag ist der erste Tag";8) `gibt 22 zurück
v1Result:=Position("TAG;"Montag ist der erste Tag";1;*) `gibt 0 zurück
v1Result:=Position("œ";"Bœuf";1;$stringlength)
`v1Result gibt 2 und $stringlength 1 zurück
Im folgenden Beispiel werden mit Längegefunden alle Vorkommen von aegis in einem Text gefunden, egal ob es “ægis” oder “aegis” geschrieben wird.
$start:=1
Repeat
v1Result:=Position("aegis";$text;$start;$stringlength)
$start:=$start+$stringlength
Until(v1Result=0)
Alle Vorkommen eines String finden und ersetzen:
var $lengthFound : Integer
$string:="Hello Joelle et joel!"
$find:="joel"
$replace:="Joël"
$option:=sk case insensitive+sk diacritic insensitive
$p:=0
Repeat
$p:=Position($find;$string;$p+1;$lengthFound;$option)
If($p>0)
$string:=Substring($string;1;$p-1)+$replace+Substring($string;$p+$lengthFound)
End if
Until($p<=0) //result: $string -> Hello Joëlle and Joël!
Produkt: 4D
Thema: String
Nummer:
15
Geändert: 4D v11 SQL
Geändert: 4D v18 R6
4D Programmiersprache ( 4D v19)
4D Programmiersprache ( 4D v19.1)