文字列に含まれる文字数を取得できます。
StringLen, OutputVar, InputVarStrLen / StringLen
str := "123" StringLen, length, str MsgBox, %length% ; 3 str := "あいう" StringLen, length, str MsgBox, %length% ; 3
コマンドではなく、「.」演算子により文字列を連結できます。
a := "A" b := "B" c := a . b MsgBox, %c% ; AB c .= "C" MsgBox, %c% ; ABC
「.」の両端にスペースがないと、演算子と認識されません。
文字列の比較で解説しています。
文字列を比較するときに、大文字/小文字を区別するかどうかを設定します。
StringCaseSense, On|Off|LocaleStringCaseSense
これの既定値はOffで、このコマンドにより設定を変更しない限り大文字/小文字は区別されません。
文字列から、部分文字列の出現位置を取得します。
StringGetPos, OutputVar, InputVar, SearchText [, L#|R#, Offset ]StringGetPos
位置0は文字列の最初で見つかったことを意味します。見つからなかったときにはOutputVarが-1、ErrorLevelが1となります。
OutputVarとInputVarは変数、SearchTextは文字列として解釈されます。よって、
StringGetPos, foo, bar, baz
とした場合には、変数barの中で文字列"baz"が見つかった位置が変数fooに格納されることになります。
文字列から、正規表現にマッチする文字列の出現位置を取得します。
FoundPos := RegExMatch( Haystack, ; 検索対象の文字列 NeedleRegEx ; 正規表現パターン [, UnquotedOutputVar = "" ; , StartingPosition = 1 ])RegExMatch
検索結果は戻り値で返されます。
FoundPos := RegExMatch( "abc123", "[0-9]" )
MsgBox, %FoundPos% ; 4
i/修飾子などのマッチモードは、パターンの前に「)」で区切って記述します。たとえば"abc"
に大文字と小文字の区別なくマッチさせるならば、"i)abc"
とします。Options (case sensitive) - RegExMatch
文字列から、部分文字列の出現位置を取得します。
InStr(Haystack, Needle [, CaseSensitive = false, StartingPos = 1])InStr - Functions
StringGetPosと似ていますが、結果の返し方が異なります。InStrでは位置0は見つからなかったことを意味し、位置1が文字列の最初となります。
部分文字列を置換します。
StringReplace, OutputVar, InputVar, SearchText [, ReplaceText, ReplaceAll?]StringReplace
マッチしなかった場合は、InputVarがそのままOutputVarに格納されます。大文字/小文字を区別するかは、StringCaseSenseコマンドの設定によります。
パラメータはそれぞれ、
とみなされます。
str := "abc"
StringReplace, NewStr, str, ab, ZZ
MsgBox, %NewStr% ; ZZc
OutputVarとInputVarには同じ変数を指定できるため、変数自身の値を置換できます。
str := "ABBC ABBC"
StringReplace, str, str, b
MsgBox, %str% ; ABC ABBC
正規表現のパターンに一致した文字列を置換します。
NewStr := RegExReplace( Haystack, ; 検索対象の文字列 NeedleRegEx ; 正規表現パターン [, Replacement = "", ; 置換文字列 OutputVarCount = "", Limit = -1, StartingPosition = 1 ])RegExReplace
置換された文字列が返されます。パターンにマッチせず置換する必要がないかエラーが発生した場合には、Haystackがそのまま返されます。エラーが発生した場合の内容はErrorLevelで確認できます。
既定でマッチするすべての文字列を置換します。これは一般的な正規表現エンジンで、/g修飾子を指定した場合と同じです。
NewStr := RegExReplace( "abc123123", "123$", "xyz" )
; NewStrは、abc123xyz となる