Operationen für Zeichenketten (Strings)
Übersicht über alle verfügbaren Operationen:
Stringoperationen:
Zusammenfügen von Strings | Mit + werden 2 Strings aneinandergehängt. V.E.str = "Hello" + " world!" (-> Ergebnis ist "Hello world!") |
+ |
|
Linken Teilstring | LEFT liefert den linken Anfangsstring eines Strings. Hole anz Zeichen aus dem String str, basierend auf dem ersten Zeichen. V.E.str = LEFT["Hello world!", 5] (-> Ergebnis ist "Hello") |
LEFT[str, anz] |
|
Mittleren Teilstring | MID liefert den Teilstring eines Strings. Hole anz Zeichen aus dem String str, beginnend mit dem Zeichen an der Stelle pos. V.E.str = MID["How are you?", 3, 5] (-> Ergebnis ist "are") |
MID[str, anz, pos] |
Rechten Teilstring | RIGHT liefert den rechten Endstring eines Strings. Hole anz Zeichen aus dem String str, basierend auf dem letzten Zeichen. V.E.str = RIGHT["Hello world! How are you?", 12] (-> Ergebnis ist "How are you?") |
RIGHT[str, anz] |
Stringlänge ermitteln | LEN liefert die Länge (Anzahl Zeichen) eines Strings. P1 = LEN["Hello world! How are you?"] (-> Ergebnis ist 25) |
LEN[str] |
Zeichenwert ermitteln | ORD liefert den numerischen Wert eines Zeichens in einem String an der Stelle pos. P1 = ORD["Hello world!”, 1] (-> Ergebnis ist 72, Zeichenwert von "H”) P2 = ORD["Hello world!”, 7] (-> Ergebnis ist 119, Zeichenwert von "w”) Wird keine Position pos angegeben, so wird der Wert des ersten Zeichens zurückgegeben. Wird eine Position pos angegeben, die größer ist als die Länge der Zeichenkette, dann wir der Fehler ID 21545 ausgegeben. Für ASCII-Zeichen gibt die Funktion ORD exakt den ASCII-Wert zurück. Bei leeren Zeichenketten ist der Rückgabewert 0. |
ORD[str, pos] |
Hinweis
Bei FIND[..] wird zwischen Groß- und Kleinbuchstaben unterschieden!
Teilstring suchen | FIND sucht einen String str2 in einem String str1 und liefert als Ergebnis die Position der ersten Übereinstimmung von str2 in str1. V.E.str1 = "Hello world! How are you?" V.E.str2 = "How" P1 = FIND[V.E.str1, V.E.str2] (-> Ergebnis ist 14) Ist String str2 in String str1 nicht vorhanden, so liefert FIND als Ergebnis den Wert 0. V.E.str1 = "Hello world! How are you?" V.E.str2 = "today" P1 = FIND[V.E.str1, V.E.str2] (-> Ergebnis ist 0) |
FIND[str1, str2] |
Teilstring löschen | DELETE löscht in einem String str eine bestimmte Anzahl Zeichen anz, beginnend mit dem Zeichen an der Stelle pos. V.E.str = DELETE["Hello world! How are you?", 5, 7] (-> Ergebnis ist "Hello ! How are you?") |
DELETE[str, anz, pos] |
Teilstring einfügen | INSERT fügt einen String str2 in einen String str1 ein, beginnend nach dem Zeichen an der Stelle pos. V.E.str1 = "Hello ! How are you?" V.E.str2 = "world" V.E.str = INSERT[V.E.str1, V.E.str2, 6] (-> Ergebnis ist "Hello world! How are you?") |
INSERT[str1, str2, pos] |
Teilstring ersetzen | REPLACE ersetzt eine Anzahl Zeichen anz in einem String str1 durch den Teilstring str2, beginnend mit dem Zeichen an der Stelle pos. V.E.str1 = "What is your name?" V.E.str2 = "age" V.E.str = REPLACE[V.E.str1, V.E.str2, 4, 14] (-> Ergebnis ist "What is your age?") |
REPLACE[str1, str2, anz, pos] |
Strings kombinieren | FSTRING generiert Strings mit dynamischem Inhalt. Die Anzahl der Teilstrings ist prinzipiell unbeschränkt und besteht aus statischen und dynamischen Elementen.
Das Ergebnis einer FSTRING-Operation ist ein String. Mit diesem kann auch wieder mit einem Plus (oder anderen für Strings zulässigen Operatoren) weitergerechnet werden:
Auch Verschachtelungen von FSTRING sind damit möglich:
V.L.Number = 123 V.L.Float = 3.57 V.E.str = FSTRING["V.L.Number: ", V.L.Number, (-> Ergebnis ist: "V.L.Number: 123 / V.L.Float: 3,57") |
FSTRING["str_stat", str_dyn, {"str_stat", str_dyn,}] |
Vergleichsoperatoren:
Hinweis
Bei Vergleichsoperationen wird zwischen Groß- und Kleinbuchstaben unterschieden!
Gleichheit | V.E.str1 = "Peter" V.E.str2 = "Peter" $IF V.E.str1 == V.E.str2 #MSG ["%s ist gleich %s!", V.E.str1, V.E.str2] $ELSE #MSG ["Strings sind nicht gleich!"] $ENDIF (-> Ergebnis ist "Peter ist gleich Peter") |
== |
Ungleichheit | V.E.str1 = "Peter" V.E.str2 = "Steve" $IF V.E.str1 != V.E.str2 #MSG ["%s ist ungleich %s!", V.E.str1, V.E.str2] $ELSE #MSG ["Strings sind gleich!"] $ENDIF (-> Ergebnis ist "Peter ist ungleich Steve") |
!= |
größer bzw. größer gleich | V.E.str1 = "Peter" V.E.str2 = "Peter" $IF V.E.str1 > V.E.str2 #MSG ["%s ist groesser als %s!", V.E.str1, V.E.str2] $ELSEIF V.E.str1 >= V.E.str2 #MSG ["%s ist groesser/gleich %s!", V.E.str1, V.E.str2] $ENDIF (-> Ergebnis ist "Peter ist groesser/gleich Peter!") V.E.str1 = "Peter" V.E.str2 = "Bob" $IF V.E.str1 > V.E.str2 #MSG ["%s ist groesser als %s!", V.E.str1, V.E.str2] $ELSEIF V.E.str1 >= V.E.str2 #MSG ["%s ist groesser/gleich %s!", V.E.str1, V.E.str2] $ENDIF (-> Ergebnis ist "Peter ist groesser als Bob!") |
>
>= |
kleiner bzw. kleiner gleich | V.E.str1 = "Peter" V.E.str2 = "Peter" $IF V.E.str1 < V.E.str2 #MSG ["%s ist kleiner als %s!", V.E.str1, V.E.str2] $ELSEIF V.E.str1 <= V.E.str2 #MSG ["%s ist kleiner/gleich %s!", V.E.str1, V.E.str2] $ENDIF (-> Ergebnis ist "Peter ist kleiner/gleich Peter!") V.E.str1 = "Bob" V.E.str2 = "Tim" $IF V.E.str1 < V.E.str2 #MSG ["%s ist kleiner als %s!", V.E.str1, V.E.str2] $ELSEIF V.E.str1 <= V.E.str2 #MSG ["%s ist kleiner/gleich %s!", V.E.str1, V.E.str2] $ENDIF (-> Ergebnis ist "Bob ist kleiner als Tim!") |
<
<= |
Konvertierungsfunktionen:
Integer nach String | INT_TO_STR[...] | V.E.str = INT_TO_STR[123] |
Real nach String | REAL_TO_STR[...] | V.E.str = REAL_TO_STR[12.34] |
String nach Integer | STR_TO_INT[...] | V.E.sgn32 = STR_TO_INT["12"] |
String nach Real | STR_TO_REAL[...] | V.E.real64 = STR_TO_REAL["123.45"] |