StringSplit

Teilt eine Zeichenkette mittels bestimmter Trennzeichen in mehrere Teilzeichenketten auf.

[v1.1.13+]: Veraltet: Dieser Befehl ist nicht für neue Skripte empfohlen. Verwenden Sie stattdessen die StrSplit-Funktion.

StringSplit, AusgabeArray, EingabeVar , Trennzeichen, ZuEntfernendeZeichen

Parameter

AusgabeArray

Name des Pseudo-Arrays, in dem jede aus EingabeVar extrahierte Teilzeichenkette gespeichert werden soll. Wenn zum Beispiel MeinArray angegeben ist, wird der Befehl die Anzahl der erzeugten Teilzeichenketten (andernfalls 0) in MeinArray0 speichern, die erste Teilzeichenkette in MeinArray1, die zweite in MeinArray2 usw.

Um ein Pseudo-Array innerhalb einer Funktion global statt lokal zu machen, deklarieren Sie MeinArray0 als globale Variable, bevor Sie diesen Befehl verwenden (für Assume-Global-Funktionen gilt das Gegenteil). Oft ist es auch notwendig, jedes Element dieses Pseudo-Arrays einzeln zu deklarieren, da ein häufiger Anlass zu Verwirrung vorliegt. Weitere Informationen finden Sie unter Funktionen.

EingabeVar

Name der Eingabevariable, deren Inhalt geparst werden soll. Umschließen Sie den Namen nicht mit Prozentzeichen, es sei denn, Sie wollen den Inhalt der Variable als Namen verwenden.

Hinweis: EingabeVar darf keine Variable von AusgabeArray sein.

Trennzeichen

Wenn leer oder weggelassen, wird jedes Zeichen in EingabeVar als einzelne Teilzeichenkette behandelt.

Andernfalls geben Sie ein oder mehrere Zeichen an (Groß-/Kleinschreibung-sensitiv), die jeweils zur Abgrenzung der Teilzeichenketten in EingabeVar verwendet werden. Da die Trennzeichen nicht als Teil der Teilzeichenketten betrachtet werden, werden sie nie in das AusgabeArray kopiert. Wenn sich zwischen zwei Trennzeichen in EingabeVar nichts befindet, wird das entsprechende Array-Element leer sein.

Zum Beispiel: `, (ein escapezeichenversehenes Komma) würde die Zeichenkette an jedem Komma teilen, während %A_Space%%A_Tab% ein neues Array-Element an jedem Leer- oder Tabulatorzeichen in EingabeVar erstellen würde.

Um eine Zeichenkette anstelle eines Zeichens als Trennung zu verwenden, verwenden Sie zunächst StrReplace() oder StringReplace, um alle Vorkommen der Zeichenkette mit einem einzelnen Zeichen zu ersetzen, das nie im Text vorkommt, wie zum Beispiel: ¢¤¥¦§©ª«®µ¶. Das folgende Beispiel zeigt, wie die Zeichenkette <br> als Trennung verwendet werden kann:

StringReplace, NeueHTML, HTMLZkette, <br>, ``, All  ; Ersetzt jedes <br> mit einem umgekehrten Häkchen.
StringSplit, MeinArray, NeueHTML, ``  ; Teilt die Zeichenkette jeweils bei einem umgekehrten Häkchen.

In [v1.1.13+] kann stattdessen MeinArray := StrSplit(HTMLZkette, "<br>") verwendet werden.

ZuEntfernendeZeichen

Wenn leer oder weggelassen, werden keine Zeichen entfernt. Andernfalls geben Sie eine Liste von Zeichen an (Groß-/Kleinschreibung-sensitiv), die am Anfang und Ende jedes Array-Elements entfernt werden sollen. Wenn ZuEntfernendeZeichen z.B. %A_Space%%A_Tab% ist, werden Leer- und Tabulatorzeichen am Anfang und Ende (aber nicht in der Mitte) jedes abgerufenen Elements entfernt.

Wenn Trennzeichen leer ist oder weggelassen wird, gibt ZuEntfernendeZeichen die Zeichen an, die das Array nicht enthalten soll.

Im Gegensatz zum letzten Parameter der meisten anderen Befehle müssen Kommas in ZuEntfernendeZeichen mit einem Escapezeichen versehen werden (`,).

Bemerkungen

Wenn die Array-Elemente bereits existieren, wird der Befehl nur die Werte der ersten N Elemente ändern, wobei N die Anzahl der Teilzeichenketten in EingabeVar ist. Alle bereits existierenden Elemente nach N bleiben unverändert. Daher ist es am sichersten, das Null-Element (MeinArray0) zu verwenden, um zu ermitteln, wie viele Elemente tatsächlich mit diesem Befehl erzeugt wurden.

Leerraumzeichen wie Leer- und Tabulatorzeichen bleiben erhalten, es sei denn, diese Zeichen sind selbst Trennzeichen oder in ZuEntfernendeZeichen angegeben. Um Leer- und Tabulatorzeichen an beiden Enden einer Variable zu entfernen, machen Sie eine Selbstzuweisung, während AutoTrim aktiv ist (Standardeinstellung). Zum Beispiel: MeinArray1 = %MeinArray1%.

Zum Splitten einer Zeichenkette im regulären CSV-Format (Comma Separated Values, dt. kommagetrennte Werte) können Sie eine parsende Schleife verwenden, da diese nativ mit CSV umgehen kann.

Um die Felder vor dem Splitten anders anzuordnen, verwenden Sie den Sort-Befehl.

Wenn die Teilzeichenketten nur temporär benötigt werden, ist es ratsam, eine parsende Schleife zu verwenden, insbesondere wenn EingabeVar sehr groß ist, da in diesem Fall viel Arbeitsspeicher gespart werden kann. Zum Beispiel:

Farben := "rot,grün,blau"
Loop, Parse, Farben, `,
    MsgBox Farbe Nr. %A_Index% ist %A_LoopField%.

StrSplit(), parsende Schleife, Arrays, Sort, SplitPath, IfInString, StringGetPos, StringMid, StringTrimLeft, StringTrimRight, StringLen, StringLower, StringUpper, StringReplace

Beispiele

Splittet einen Satz in ein Array von Wörtern und meldet das vierte Wort.

TestZkette := "Das ist ein Test."
StringSplit, wort_array, TestZkette, %A_Space%, .  ; Entfernt Punkte.
MsgBox, Das vierte Wort ist %wort_array4%.

Splittet eine kommagetrennte Liste von Farben in ein Array von Teilzeichenketten und geht diese einzeln durch.

Farben := "rot,grün,blau"
StringSplit, FarbenArray, Farben, `,
Loop, %FarbenArray0%
{
    diese_Farbe := FarbenArray%A_Index%
    MsgBox, Farbe Nr. %A_Index% ist %diese_Farbe%.
}