文字列を処理するコマンド

関連するコマンド

  • FormatTime
  • IfInString / IfNotInString
  • If var [not] in / contains MatchList
  • InStr()
  • Loop (parse a string)
  • RegExMatch()
  • RegExReplace()
  • SetEnv (var = value)
  • SetFormat
  • Sort
  • StringCaseSense
  • StringGetPos
  • StringLeft / StringRight
  • StringLen
  • StringLower / StringUpper
  • StringMid
  • StringReplace
  • StringSplit
  • StringTrimLeft / StringTrimRight
  • StrLen()
  • StrPut() / StrGet()
  • SubStr()
  • Trim()

長さ

StringLen

文字列に含まれる文字数を取得できます。

StringLen, OutputVar, InputVar
StrLen / 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

文字列を比較するときに、大文字/小文字を区別するかどうかを設定します。

StringCaseSense, On|Off|Locale
StringCaseSense

これの既定値はOffで、このコマンドにより設定を変更しない限り大文字/小文字は区別されません

検索

StringGetPos

文字列から、部分文字列の出現位置を取得します。

StringGetPos, OutputVar, InputVar, SearchText [, L#|R#, Offset ]
StringGetPos

位置0は文字列の最初で見つかったことを意味します。見つからなかったときにはOutputVarが-1、ErrorLevelが1となります。

OutputVarInputVar変数SearchText文字列として解釈されます。よって、

StringGetPos, foo, bar, baz

とした場合には、変数barの中で文字列"baz"が見つかった位置が変数fooに格納されることになります。

RegExMatch

文字列から、正規表現にマッチする文字列の出現位置を取得します。

FoundPos := RegExMatch(
    Haystack,                 ; 検索対象の文字列
    NeedleRegEx               ; 正規表現パターン
    [, UnquotedOutputVar = "" ;
    , StartingPosition = 1
    ])
RegExMatch

検索結果は戻り値で返されます。

  • 0 …マッチしなかった。
  • 1以上 … 最初の文字を1とした、マッチした文字の位置。
  • 空文字 … エラーが発生した。エラー内容はErrorLevelで確認できるが、それが0ならば原因は不明
FoundPos := RegExMatch( "abc123", "[0-9]" )
MsgBox, %FoundPos% ; 4

オプション (修飾子)

i/修飾子などのマッチモードは、パターンの前に「)」で区切って記述します。たとえば"abc"に大文字と小文字の区別なくマッチさせるならば、"i)abc"とします。Options (case sensitive) - RegExMatch

InStr

文字列から、部分文字列の出現位置を取得します。

InStr(Haystack, Needle [, CaseSensitive = false, StartingPos = 1])
InStr - Functions

StringGetPosと似ていますが、結果の返し方が異なります。InStrでは位置0は見つからなかったことを意味し、位置1が文字列の最初となります。

置換

StringReplace

部分文字列を置換します。

StringReplace, OutputVar, InputVar, SearchText [, ReplaceText, ReplaceAll?]
StringReplace

マッチしなかった場合は、InputVarがそのままOutputVarに格納されます。大文字/小文字を区別するかは、StringCaseSenseコマンドの設定によります。

パラメータはそれぞれ、

  • OutputVarInputVar
  • SearchTextReplaceText … 文字列

とみなされます。

str := "abc"
StringReplace, NewStr, str, ab, ZZ

MsgBox, %NewStr% ; ZZc

OutputVarInputVarには同じ変数を指定できるため、変数自身の値を置換できます。

str := "ABBC ABBC"
StringReplace, str, str, b

MsgBox, %str% ; ABC ABBC

RegExReplace

正規表現のパターンに一致した文字列を置換します。

NewStr := RegExReplace(
    Haystack,            ; 検索対象の文字列
    NeedleRegEx          ; 正規表現パターン
    [, Replacement = "", ; 置換文字列
    OutputVarCount = "",
    Limit = -1,
    StartingPosition = 1
    ])
RegExReplace

置換された文字列が返されます。パターンにマッチせず置換する必要がないかエラーが発生した場合には、Haystackがそのまま返されます。エラーが発生した場合の内容はErrorLevelで確認できます。

既定でマッチするすべての文字列を置換します。これは一般的な正規表現エンジンで、/g修飾子を指定した場合と同じです。

NewStr := RegExReplace( "abc123123", "123$", "xyz" )
; NewStrは、abc123xyz となる