Dies ist die alte 4D Dokumentations-Website. Die neue und aktualisierte Dokumentation finden Sie unter developer.4d.com

Home

 
4D v20 R7
Position

Position 


 

Position ( Suchtext ; Quelltext {; Start {; LängeGefunden}}{; *} ) -> Funktionsergebnis 
Parameter Typ   Beschreibung
Suchtext  String in Zu suchender Text
Quelltext  String in String, in dem gesucht wird
Start  Lange Ganzzahl in Stelle in String, wo die Suche beginnt
LängeGefunden  Lange Ganzzahl in Länge des gefundenen String
Operator in Mit Stern: Vergleich basiert auf Zeichen-Codes
Funktionsergebnis  Lange Ganzzahl in Stelle des ersten Auftretens
Position ( Suchtext ; Quelltext ; Start ; LängeGefunden ; Optionen ) -> Funktionsergebnis 
Parameter Typ   Beschreibung
Suchtext  String in zu suchender Text
Quelltext  String in String, in dem gesucht wird
Start  Lange Ganzzahl in Stelle in String, wo die Suche beginnt
LängeGefunden  Lange Ganzzahl in Länge des gefundenen String
Optionen  Lange Ganzzahl in Suchkriterien
Funktionsergebnis  Lange Ganzzahl in 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:

  • (erste Syntax - Parameter * ) mit * als letztem Parameter basieren Vergleiche auf Zeichen-Codes. Übergeben Sie *, um:
    • Sonderzeichen zu berücksichtigen, die z.B. als Begrenzer dienen: Zeilenschaltung (Char(1), etc.),
    • Groß- und Kleinschreibung und Zeichen mit Akzenten unterschiedlich zu werten: a#A, a#à, etc. 
      Beachten Sie, dass der Vergleich in diesem Modus keine Variation in der Schreibweise von Wörtern behandelt.

      Hinweis: In bestimmten Fällen kann der Parameter * die Ausführung des Befehls signifikant beschleunigen.

  • (zweite Syntax - Parameter Optionen) eine oder mehrere Konstanten aus der Gruppe Strings:

    Konstante Wert Kommentar
    sk case insensitive 2

    Strings werden entsprechend der aktuellen Datensprache verglichen, ohne Berücksichtigung von Unterschieden in der Großschreibung. Beachten Sie, dass diakritische Zeichen in Betracht gezogen werden. So wird z. B. "A" mit "a" gleichgesetzt, "a" jedoch nicht mit "à". Standardmäßig unterscheidet der 4D String-Vergleich nicht zwischen Groß- und Kleinschreibung. 

     

    Kann kombiniert werden mit: 

    • sk char codes OR sk diacritic insensitive
    • sk whole word (nur Funktion Position)

    Diese Konstante impliziert die Verwendung der folgenden Konstanten (die zur besseren Lesbarkeit auch kombiniert werden können):

    • sk kana insensitive
    • sk width insensitive
    • sk strict
    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

    Strings werden entsprechend der aktuellen Datensprache verglichen, wobei die diakritischen Zeichen (z. B. Akzent oder Symbol) von Buchstaben ignoriert werden. Zum Beispiel wird "a" als "à" betrachtet. 

     

    Kann kombiniert werden mit:

    • sk case insensitive
    • sk whole word (nur Funktion Position)

    Diese Konstante impliziert die Verwendung der folgenden Konstanten (die zur besseren Lesbarkeit auch kombiniert werden können):

    • sk kana insensitive
    • sk width insensitive
    • sk strict
    sk kana insensitive 8

    Für die japanische Sprache. Steuert die Unterscheidung zwischen Hiragana- und Katakana-Silben. Aus semantischer Sicht ist der Unterschied zwischen Hiragana und Katakana in der Regel signifikant, aber um so viele Ergebnisse wie möglich zu erfassen, wird der Unterschied in 4D standardmäßig ignoriert (kana-insensitive). Zum Beispiel wird "あ" als dasselbe wie "ア" angesehen. Mit der Option sk strict wird ein kana-empfindlicher Vergleich durchgeführt. sk kana insensitive kann verwendet werden, um die Regel teilweise zu lockern, damit sie kana-unempfindlich ist. 

     

    Hinweis: Die Datensprache muss auf Japanisch eingestellt sein, um diese Option zu verwenden. Bei allen anderen Sprachen wird die Option ignoriert und Compare strings funktioniert so, als ob sk strict angegeben wurde. Mit anderen Worten, wenn diese Option in einem nicht-japanischen Kontext gesetzt wird, wird der Vergleich kana-empfindlich (das Gegenteil ist der Fall).

     

    Kann kombiniert werden mit:

    • sk case insensitive
    • sk diacritic insensitive

     

    Diese Konstante impliziert die Verwendung der folgenden Konstanten (die zur besseren Lesbarkeit auch kombiniert werden können): 

    • sk width insensitive
    • sk strict
    sk strict 0

    Strings werden auf exakte Übereinstimmungen gemäß der aktuellen Datensprache verglichen. In den meisten Fällen werden Großschreibung und diakritische Zeichen von Buchstaben beim Vergleich berücksichtigt. 

     

    Kann kombiniert werden mit:

    • sk case insensitive
    • sk diacritic insensitive
    • sk kana insensitive

    Diese Konstante impliziert die Verwendung der folgenden Konstante (die zur besseren Lesbarkeit auch kombiniert werden kann):

    • sk width insensitive
    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 case insensitive (nur Funktion Position)
    • sk diacritic insensitive (nur Funktion Position)
    sk width insensitive 16

    Für die japanische Sprache. Entspricht dem Unicode-Standard "Ostasiatische Breite", wie in  Unicode Standard Annex #11 definiert. Aus semantischer Sicht ist der Unterschied zwischen einem "schmalen" und einem "breiten" Zeichen oder einem "Zeichen mit voller Breite" und einem "Zeichen mit halber Breite" in der Regel unbedeutend, was der Standardmodus in 4D ist. Zum Beispiel wird "ア" als dasselbe angesehen wie "ア". Mit der Option sk strict wird ein breitenabhängiger Vergleich durchgeführt. Die Option sk width insensitive kann verwendet werden, um die Regel teilweise zu lockern, so dass sie breitenunempfindlich ist (siehe Beispiel 2). 

     

    Hinweis:

    • Die Datensprache muss auf Japanisch eingestellt sein, um diese Option zu verwenden. Bei allen anderen Sprachen wird die Option ignoriert und Compare strings funktioniert so, als ob sk strict angegeben wurde. Mit anderen Worten, das Setzen dieser Option in einem nicht-japanischen Kontext würde die Vergleichsbreite empfindlich machen (der gegenteilige Effekt).
    • Diese Option wird von der Funktion Position ignoriert. Unicode width insensitive collation ist asymmetrisch und kann nicht nach Position oder Länge lokalisiert werden. 

     

    Kombinierbar mit:

    • sk case insensitive
    • sk diacritic insensitive
    • sk kana insensitive

     

    Diese Konstante impliziert die Verwendung der folgenden Konstante (die zur besseren Lesbarkeit auch kombiniert werden kann):

    • sk strict


Weitere Informationen dazu finden Sie im Abschnitt 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!



Siehe auch 

Compare strings
Substring

 
EIGENSCHAFTEN 

Produkt: 4D
Thema: String
Nummer: 15

Dieser Befehl kann in preemptive Prozessen laufen

 
SEITENINHALT 
 
GESCHICHTE 

Geändert: 4D v11 SQL
Geändert: 4D v18 R6

 
ARTIKELVERWENDUNG

4D Programmiersprache ( 4D v20 R7)