StringSplit

文字列を指定の区切り文字で分割する

StringSplit, OutputArray, InputVar [, Delimiters, OmitChars, FutureUse]

Parameters

引数名説明
OutputArray 結果の文字列群を格納する変数名のプレフィクス。
ここで指定した文字列の後ろに「0」をつけた名前の変数に、分割された要素数が格納され、「1」以降の数字をつけた名前の変数に、各要素が格納される。
たとえば、ここで「array」を指定した場合、「array0」に要素数が、「array1」「array2」...に各要素が格納される。
InputVar 分割するもとの文字列を格納した変数名
Delimiters 区切り文字として使用したい文字を列挙。大文字小文字は区別される。
省略時は、InputVarが1文字ずつに分解される。
OutputArrayに格納される文字列には、区切り文字は含まれない。
OmitChars 分割された各要素の最初と最後から取り除く文字を列挙。(大文字小文字は区別される)
Delimitersが空の場合、ここで指定した文字を除いて1文字ずつに分解される。
FutureUse 将来の拡張のために予約されている。この引数は常に省略する。

Remarks

InputVar内に区切り文字が二つ以上連続していた場合、空要素ができる。

文字ではなく文字列を区切りにしたい場合、まずStringReplaceで区切りにしたい文字列を1文字の文字に置換してからStringSplitを使用する。

すでに結果が代入されるべき変数と同じ名前の変数が存在する場合、内容は上書きされる。
しかし、結果の要素が存在しない変数は、上書きされない。
たとえば、「a1」「a2」「a3」が存在する状態で、OutputArrayに「a」を指定して分割を行い、2つの要素に分割された場合、「a1」「a2」は上書きされるが、「a3」は上書きされずそのままになる。

parsing loopを使用すれば、分割後の要素をメモリに格納せずに、分割した各要素に対して処理を行うことが出来る。
大きな文字列を処理したいときなどは、こちらのほうが便利。

parsing loopを使用すれば、標準的なCSVフォーマットに従って文字列を処理することも出来る。

結果の要素を整列してから分割するには、Sortで整列してからStringSplitする。

Related

Parsing loop, Arrays, Sort, SplitPath, IfInString, StringGetPos, StringMid, StringTrimLeft, StringTrimRight, StringLen, StringLower, StringUpper, StringReplace

Example(s)

TestString = This is a test.
StringSplit, word_array, TestString, %A_Space%, .  ; Omits periods.
MsgBox, The 4th word is %word_array4%.

Colors = red,green,blue
StringSplit, ColorArray, Colors, `,
Loop, %ColorArray0%
{
	StringTrimLeft, this_color, ColorArray%a_index%, 0
	MsgBox, Color number %a_index% is %this_color%.
}