Funktionreferenz


StringSplit

Beschreibung anzeigen in

Teilt einen String, abhängig von den/dem gewählten Trennzeichen (delimiters), in Stringfolgen auf und gibt diese in einem Array zurück.

StringSplit ( "string", "delimiters" [, flag = 0] )

Parameter

string Der zu bearbeitende String.
delimiters Ein oder mehrere Trennzeichen. Die Groß- und Kleinschreibung wird berücksichtigt.
flag [optional] ändert wie das Teilen des Strings funktionieren soll. Es können mehrere Flags zusammen verwendet werden:
    $STR_CHRSPLIT (0) = es fungiert jedes in den Trennzeichen enthaltene Zeichen als Trennmarkierung (Standardwert)
    $STR_ENTIRESPLIT (1) = es wird der gesamte Trennzeichenstring als Trennmarkierung genutzt
    $STR_NOCOUNT (2) = deaktiviert die Rückgabe der Anzahl im ersten Element. Dadurch wird das Array 0-basierend. Man muss nun mit UBound() die Größe des Arrays feststellen.

Die Konstanten sind in StringConstants.au3 definiert.

Rückgabewert

Gibt ein Array zurück. Standardmäßig enthält das erste Element ($aArray[0]) die Anzahl der zurückgegebenen Teilstrings. Die weiteren Elemente ($aArray[1], $aArray[2], etc.) enthalten die Teilstrings des aufgeteilten Strings.
Falls der flag Parameter auf $STR_NOCOUNT (2) gesetzt wurde, wird die Anzahl nicht in dem ersten Element enthalten sein.

Wird kein Trennzeichen gefunden, wird @error auf 1 gesetzt
    die Anzahl ist gleich 1 ($aArray[0]) und der gesamte String wird zurückgegeben ($aArray[1]).
    Falls das Flag ungleich $STR_NOCOUNT ist, so wird $aArray[0] auf 1 gesetzt und der komplette String wird in $aArray[1] zurückgegeben.
    Falls das Flag gleich $STR_NOCOUNT ist, so wird der komplette String in $aArray[0] zurückgegeben.

Bemerkungen

Wird als Trennzeichen ein Leerstring "" angegeben, so wird jedes Zeichen des Strings im Array als Element zurückgegeben.

Falls das Trennzeichen mehrere Zeichen enthält ist das Verhalten der Funktion abhängig von den Flag-Einstellungen.
Falls $STR_CHRSPLIT eingestellt ist, so wird der String bei jedem einzelnen Zeichen des Trennzeichen-Strings getrennt.
Falls $STR_ENTIRESPLIT eingestellt ist, so wird der String nur getrennt wenn der komplette Trennzeichen-String vorkommt. Siehe zweites Beispiel unten.

Es ist zu beachten, dass das Makro @CRLF momentan ein 2-Zeichen-String ist. Wenn der Flag-Parameter nicht auf $STR_ENTIRESPLIT steht, so wird eine zusätzliche Leerzeile erzeugt, da der String in @CR und @LF getrennt wird.
StringSplit() ist sehr brauchbar als Alternative zu StringInStr() und zum Befüllen eines Arrays.

Verwandte Funktionen

StringInStr, StringLeft, StringLen, StringLower, StringMid, StringRight, StringTrimLeft, StringTrimRight, StringUpper

Beispiel

Beispiel 1

#include <MsgBoxConstants.au3>

Example()

Func Example()
    Local $aDays = StringSplit("Mo,Di,Mi,Do,Fr,Sa,So", ",") ; Trennt den String mit den Tagen durch das Trennzeichen ",".
    #cs
        Das Array gibt folgende Werte zurück:
        $aDays[1] = "Mo"
        $aDays[2] = "Di"
        $aDays[3] = "Mi"
        ...
        $aDays[7] = "So"
    #ce

    For $i = 1 To $aDays[0] ; Durchläuft das Array, welches durch StringSplit zurückgegeben wurde und stellt die Werte dar.
        MsgBox($MB_SYSTEMMODAL, "", "$aDays[" & $i & "] - " & $aDays[$i])
    Next
EndFunc   ;==>Example

Beispiel 2

#include <MsgBoxConstants.au3>
#include <StringConstants.au3>

Example()

Func Example()
    Local $sText = "Diese\nZeile\nenthält\nC-style Trennungen." ; Definiert eine Variable mit Text.
    Local $aArray = StringSplit($sText, '\n', $STR_ENTIRESPLIT) ; Übergibt die Variable an StringSplit und verwendet das Trennzeichen "\n".
    ; Es ist zu beachten, dass der flag Parameter auf $STR_ENTIRESPLIT (1) gesetzt ist. Sonst wird es bei jedem \ bzw n getrennt und nicht nur wenn beide Zeichen zusammen auftreten.
    #cs
        Das zurückgegebene Array wird folgende Werte enthalten:
        $aArray[1] = "Diese"
        $aArray[2] = "Zeile"
        ...
        $aArray[4] = "C-style Trennungen."
    #ce

    For $i = 1 To $aArray[0] ; Durchläuft das Array welches von StringSplit zurückgegeben wurde. Es werden die individuellen Werte dargestellt.
        MsgBox($MB_SYSTEMMODAL, "", "$aArray[" & $i & "] - " & $aArray[$i])
    Next
EndFunc   ;==>Example

Beispiel 3

#include <MsgBoxConstants.au3>
#include <StringConstants.au3>

Example()

Func Example()
    Local $sText = "Diese\nZeile\nenthält\nC-style Trennungen." ; Definiert eine Variable mit Text.

    ; Übergibt die Variable an StringSplit und verwendet das Trennzeichen "\n".
    ; Es ist zu beachten, dass der flag Parameter auf $STR_ENTIRESPLIT (1) gesetzt ist. Sonst wird es bei jedem \ bzw n getrennt und nicht nur wenn beide Zeichen zusammen auftreten.
    MsgBox($MB_SYSTEMMODAL, "", StringSplit($sText, '\n', $STR_ENTIRESPLIT)[2]) ; Direkter Zugriff auf den Arrayindex durch die Verwendung des Arrayzugriffs auf den Ausdruck.
    #cs
        Ein internes temporäres Array wird verwendet um einen String zurückzugeben, der die folgenden Werte enthalten sollte.:
        $aArray[1] = "Diese"
        $aArray[2] = "Zeile"
        ...
        $aArray[4] = "C-style Trennungen."
    #ce
EndFunc   ;==>Example