StringGetPos
提供: AutoHotkey Wiki
実行制御 | GUI表示 | 演算・変数 | メモリ・DLL操作 | 文字列操作 |
キーボード | マウス | シェル | ウィンドウ | ウィンドウグループ
ステータスバー | コントロール | サウンド | ファイル | INIファイル |
レジストリ | 環境変数 | AutoHotkey | その他 | 設定関係 | オブジェクト
StringGetPos[編集]
文字列中の特定の文字列の位置を検索する。
StringGetPos, OutputVar, InputVar, SearchText [, L#|R# , Offset]
Parameters[編集]
引数名 | 説明 |
---|---|
OutputVar | 検索された位置を格納する変数名。 文字列の最初は 0 として数える。見つからなかった場合は、 -1 になる。
|
InputVar | 文字を検索する対象の文字列が格納された変数名。 |
SearchText | 検索する文字列。 StringCaseSenseで設定しない限り、大文字小文字の違いは無視される。 |
L#|R# | SearchTextにマッチする部分が複数ある場合、何番目の出現位置を取得するかを指定できる。 省略時は、一番最初の出現位置を取得する。 1 や R を指定すると、一番最後の出現位置を取得できる。L2 のように L に続いて数字を指定すると、最初から指定番目の出現位置を取得できる。R3 のように R に続いて数字を指定すると、最後から指定番目の出現位置を取得できる。SearhTextの出現数がLやRに続いて指定した数より少なかった場合、見つからなかったみなされ、OutputVarは -1 になる。
|
Offset | 検索時、最初のOffset文字分だけ無視して検索を始める。 省略時は 0 。L#|R#で最後から検索する指定になっている場合、最後のOffset文字分を飛ばして検索を始める。 |
ErrorLevel[編集]
SearchTextが見つからなかった場合は 1
、見つかった場合は 0
Remarks[編集]
結果はバイト単位となり2バイト文字の途中であるかどうかは考慮されない(日本語を扱う上での不具合を参照。)
AHKL ユニコード版では全角/半角に関わらず文字単位である。
StringMidと違い、文字列の最初は 0
文字目として処理される。
L#|R#やOffsetオプションでの指定にかかわらず、必ずInputVarの先頭からの位置が取得される。
ファイルのパスを分解したい場合、SplitPathを使ったほうが便利。
SearchTextやReplaceTextに半角スペースやTab文字を指定したい場合、組み込み変数%A_Space%や%A_Tab%を使用する。
Related[編集]
IfInString, StringCaseSense, SplitPath, StringLeft, StringRight, StringMid, StringTrimLeft, StringTrimRight, StringLen, StringLower, StringUpper, StringReplace, if var is type
Example(s)[編集]
Haystack = abcdefghijklmnopqrs Needle = def StringGetPos, pos, Haystack, %Needle% If pos >= 0 MsgBox, The string was found at position %pos%.
; Example #2:
; Divides up the full path name of a file into components.
; Note that it would be much easier to use StringSplit or a
; parsing loop to do this, so the below is just for illustration.
FileSelectFile, file, , , Pick a filename in a deeply nested folder: If file <> { StringLen, pos_prev, file pos_prev += 1; Adjust to be the position after the last char.
Loop {; Search from the right for the Nth occurrence:
StringGetPos, pos, file, \, R%A_Index% If ErrorLevel <> 0 Break length := pos_prev - pos - 1 pos_prev := pos pos += 2; Adjust for use with StringMid.
StringMid, path_component, file, %pos%, %length% MsgBox Path component #%A_Index% (from the right) is:`n%path_component% } }