StringSplit
実行制御 | GUI表示 | 演算・変数 | メモリ・DLL操作 | 文字列操作 |
キーボード | マウス | シェル | ウィンドウ | ウィンドウグループ
ステータスバー | コントロール | サウンド | ファイル | INIファイル |
レジストリ | 環境変数 | AutoHotkey | その他 | 設定関係 | オブジェクト
StringSplit[編集]
文字列を指定の区切り文字で分割する。
StringSplit, OutputArray, InputVar [, Delimiters, OmitChars]
Parameters[編集]
引数名 | 説明 |
---|---|
OutputArray | 結果の文字列群を格納する変数名のプレフィクス。 ここで指定した文字列の後ろに 0 をつけた名前の変数に、分割された要素数が格納され、 1 以降の数字をつけた名前の変数に、各要素が格納される。たとえば、ここで array を指定した場合、 array0 に要素数が、 array1 array2... に各要素が格納される。
|
InputVar | 分割するもとの文字列を格納した変数名 |
Delimiters | 区切り文字として使用したい文字を列挙。大文字小文字は区別される。 省略時は、InputVarが1文字ずつに分解される。 OutputArrayに格納される文字列には、区切り文字は含まれない。 |
OmitChars | 分割された各要素の最初と最後から取り除く文字を列挙。(大文字小文字は区別される) Delimitersが空の場合、ここで指定した文字を除いて1文字ずつに分解される。 |
Remarks[編集]
区切り文字の指定の仕方によっては意図しない結果となる可能性がある。 (日本語を扱う上での不具合を参照。)
AHKL ユニコード版では全角/半角に関わらず文字単位で処理される。
InputVar内に区切り文字が二つ以上連続していた場合、空要素ができる。
文字ではなく文字列を区切りにしたい場合、まずStringReplaceで区切りにしたい文字列を1文字の文字に置換してからStringSplitを使用する。
すでに結果が代入されるべき変数と同じ名前の変数が存在する場合、内容は上書きされる。
しかし、結果の要素が存在しない変数は、上書きされない。
たとえば、 a1 a2 a3
が存在する状態で、OutputArrayに a
を指定して分割を行い、2つの要素に分割された場合、 a1 a2
は上書きされるが、 a3
は上書きされずそのままになる。
parsing loopを使用すれば、分割後の要素をメモリに格納せずに、分割した各要素に対して処理を行うことが出来る。
大きな文字列を処理したいときなどは、こちらのほうが便利。
parsing loopを使用すれば、標準的なCSVフォーマットに従って文字列を処理することも出来る。
結果の要素を整列してから分割するには、Sortで整列してからStringSplitする。
Related[編集]
StrSplit(), Parsing loop, 配列, Sort, SplitPath, IfInString, StringGetPos, StringMid, StringTrimLeft, StringTrimRight, StringLen, StringLower, StringUpper, StringReplace
Example(s)[編集]
TestString = This is a test.
StringSplit, word_array, TestString, %A_Space%, . ; ピリオドを省略します
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%.
}