StringSplit

Teilt anhand bestimmter Trennzeichen eine Zeichenkette in mehrere Teilzeichenketten auf.

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

StringSplit, AusgabeArray, EingabeVar , Trennzeichen, WegzulassendeZeichen

Parameter

AusgabeArray

Name des Pseudo-Arrays, in der jede extrahierte Teilzeichenkette von EingabeVar gespeichert werden soll. Wenn zum Beispiel MeinArray angegeben ist, wird der Befehl die Anzahl der erzeugten Teilzeichenketten (0, wenn keine) in MeinArray0 speichern, die erste Teilzeichenkette in MeinArray1, die zweite in MeinArray2 und so weiter.

Um innerhalb einer Funktion ein Pseudo-Array global statt lokal zu machen, deklarieren Sie MeinArray0 als globale Variable, bevor Sie diesen Befehl verwenden (das Gegenteil davon gilt für Assume-Global-Funktionen). Oft ist es auch notwendig, jedes Element dieses Pseudo-Arrays einzeln zu deklarieren, da ein häufiger Anlass zu Verwirrung vorliegt. Für weitere Details, siehe 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 dieser Parameter weggelassen wird oder leer ist, wird jedes Zeichen in EingabeVar als einzelne Teilzeichenkette behandelt.

Ansonsten kann Trennzeichen ein oder mehrere Zeichen enthalten (Groß-/Kleinschreibung-sensitiv), um zu bestimmen, wo die Abgrenzungen zwischen den Teilzeichenketten in EingabeVar erfolgen sollen. Da die Trennzeichen nicht zu den Teilzeichenketten gehören, werden sie nie in AusgabeArray kopiert. Befindet sich außerdem nichts zwischen einem Paar von Trennzeichen innerhalb von EingabeVar, wird das entsprechende Array-Element leer sein.

Zum Beispiel: `, (ein escapezeichenversehenes Komma) würde die Zeichenkette jeweils bei einem Komma teilen. Ebenso würde %A_Tab%%A_Space% jedes Mal ein neues Array-Element erstellen, wenn ein Leer- oder Tabulatorzeichen in EingabeVar vorkommt.

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 genutzt wird. 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.
WegzulassendeZeichen

Eine optionale Liste von Zeichen (Groß-/Kleinschreibung-sensitiv), die jeweils am Anfang und Ende eines Array-Elements weggelassen werden sollen. Wenn WegzulassendeZeichen beispielsweise %A_Space%%A_Tab% wäre, wird bei jedem abgerufenen Element Leer- oder Tabulatorzeichen am Anfang und Ende (aber nicht in der Mitte) entfernt.

Wenn Trennzeichen leer ist, gibt WegzulassendeZeichen an, welche Zeichen das Array nicht enthalten soll.

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

Bemerkungen

Falls die Array-Elemente bereits vorhanden sind, wird der Befehl die Werte nur von den ersten N Elementen ändern - N ist dabei die Anzahl der Teilzeichenketten in EingabeVar. Alle bereits vorhandenen Elemente über N bleiben unverändert. Daher sollte man am besten das 0-Element (MeinArray0) verwenden, um festzustellen, wie viele Elemente tatsächlich mit diesem Befehl erstellt worden sind.

Leerraumzeichen wie Leer- und Tabulatorzeichen werden beibehalten, sofern sie selbst keine Trennzeichen sind oder in WegzulassendeZeichen vorkommen. Leer- und Tabulatorzeichen können an beiden Enden einer Variable via Selbstzuweisung entfernt werden, während AutoTrim aktiv ist (Standardeinstellung). Zum Beispiel: MeinArray1 = %MeinArray1%.

Um eine Zeichenkette im CSV-Format (kommagetrennte Werte) zu splitten, können Sie eine parsende Schleife verwenden, weil sie nativ mit CSV umgehen kann.

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

Wenn die Teilzeichenketten nicht dauerhaft im Arbeitsspeicher vorhanden sein müssen, sollten Sie in Betracht ziehen, eine parsende Schleife zu verwenden. Sie könnten dadurch viel Speicherplatz sparen, vor allem, wenn EingabeVar sehr groß ist. Zum Beispiel:

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

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

Beispiele

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

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

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

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