STR_CUT, MID, SUBSTR

Die Funktionen STR_CUT, MID und SUBSTR kopieren Zeichen eines Strings und ermöglichen es Ihnen, den resultierenden String zu kürzen. Verwenden Sie diese Funktionen, wenn Sie alle oder Teile von Strings kopieren möchten. Definieren Sie, von welchem Zeichen aus mit dem Kopieren begonnen werden soll, und definieren Sie optional die Anzahl der Zeichen, die Sie kopieren möchten.

Diese Script-Funktionen dienen alle einem a ähnlichen Zweck, nämlich einen Teil eines Stringszu kopieren. Definieren Sie den String, aus dem Sie die Zeichen kopieren möchten, und welches Zeichen in diesem String Sie von Start aus kopieren möchten. Geben Sie optional die Länge an, wenn Sie nur eine bestimmte Anzahl von Zeichen kopieren möchten. Wenn Sie keine Länge angeben, gibt die Funktion alle Zeichen bis zum Ende des Strings zurück.

Hinweis: Sie können eine absolute Länge angeben, die die Anzahl der Zeichen überschreitet, die im String zur Verfügung stehen. In diesem Fall geben die Funktionen die definierten Zeichen mit zusätzlichen Leerzeichen an, die angehängt werden. Bei Bedarf können Sie diese Leerzeichen mit der STR_RTRIM-Funktion kürzen.

Der ursprüngliche String selbst bleibt unverändert, da Sie den neuen String in einer Variable speichern. 

Syntax

STR_CUT (String, Start[, Länge])
MID (String, Start[, Länge])
SUBSTR (String, Start[, Länge])

Parameter

  • STR_CUT, MID oder SUBSTR
    Kopiert die Zeichen eines Strings
  • String
    Alphanumerischer String
    Format: Script-Literal oder Script-Variable
  • Start
    Startposition für das Kopieren
    Format: Zahl ohne Anführungszeichen oder Script-Variable
    Wichtig! Mit der Einführung von UTF-8 bezieht dieser Parameter sich auf die Zeichenposition und nicht auf die Byteposition. Beispielsweise gibt der Wert „7“ das 7. Zeichen und nicht zwangsläufig das 7. Byte an.
  • Länge
    (Optional) Anzahl der zu kopierenden Zeichen
    Format:
    Zahl ohne Anführungszeichen oder Script-Variable
    Wichtig! Mit der Einführung von UTF-8 bezieht dieser Parameter sich auf die Anzahl der Zeichen und nicht auf die Anzahl der Byte. Beispielsweise gibt der Wert „10“ Zeichen an, es kann jedoch zehn oder mehr Bytes enthalten.

Rückgabewert: Der angegebene Teil des Strings


Beispiele

Das folgende Script gibt alle Zeichen zurück, beginnend mit dem vierten Zeichen bis zum Ende des Strings. Das Ergebnis ist System.

: SET   &PARTOFSTRING# = SUBSTR ( "AE system" , 4)

Im folgenden Beispiel werden zwei Zeichen zurückgegeben, beginnend mit dem dritten Zeichen des Strings. Das Ergebnis ist CD.

: SET &STRING# = MID ( "ABCDEFGH" ,3,2)

Im folgenden Beispiel werden alle Zeichen zurückgegeben, die mit dem dritten Zeichen beginnen. Das zurückgegebene Ergebnis ist CDEFGH.

: SET &STRING# = SUBSTR ( "ABCDEFGH" ,3)

Im folgenden Beispiel wird eine Länge festgelegt, die die Anzahl der Zeichen überschreitet, die im String verfügbar sind. Aus diesem Grund fügt die Funktion leere Zeichen für die fehlenden Zeichen ein. Das Ergebnis ist >>CDEFGH    <<.

: SET &STRING# = STR_CUT ( "ABCDEFGH" ,3,10)

: PRINT ">>&STRING#<<"

Das folgende Script teilt einen benutzerdefinierten Begriff auf. Die ersten drei Zeichen werden dabei der ersten Script-Variable, das letzte Zeichen der zweiten Script-Variable zugewiesen.

: READ &TABNAME# , "04" , "Bitte geben Sie die Registerkarteellennamen an: xxxy"
:
SET &TABPRE# = SUBSTR ( &TABNAME# ,1,3)
:
SET &TABSUF# = SUBSTR ( &TABNAME# ,4,1)

Aufgrund der UTF-8-Änderungen ab v24 funktioniert der gängige Tipp zum Aufteilen von CRLF in die beiden Komponenten CR und LF nicht mehr, da CRLF jetzt als ein einziges Zeichen behandelt wird:

: SET   &CRLF# = UC_CRLF()

: SET   &CR# = substr(&CR#,1,1)
:
SET   &LF# = substr(&LF#,2,1)

Das oben genannte Script führt zur folgenden Fehlermeldung:

U00020305 Runtime error in object 'xxx', line '00003'. The start column for the sub-string statement ('002') is not within the string (length '0001').

Lösung: Um eine einzelnes CR ("0D") oder LF ("0A") anzugeben, können Sie jetzt die neue Script-Funktion HEX_2_STRING verwenden:

: SET   &CR# = HEX_2_STRING ( "0D" )
:
SET   &LF# = HEX_2_STRING ( "0A" )

Siehe auch: