VBScript: 文字列を検索する Instr()
VBScriptで文字列を検索する場合は、 Instr()関数を使用します。
Instr()関数の書式は次の通りです。
書式
Instr([開始位置,] 文字列, 検索ワード [, 比較モード])
文字列から検索ワードを検索し、最初に見つかった位置を返します。
検索開始位置からの位置ではなく、文字列の先頭からの位置を返します
(VBScriptでは、文字列の先頭位置は「0」ではなく「1」です)。
検索ワードが見つからなかった場合の戻り値は「0」です。
「開始位置」と「比較モード」は省略可能です。 開始位置を省略すると先頭から検索します。
「比較モード」の値は次の通りで、省略した場合はバイナリーモードでの 検索となります。
| 定数 | 値 | 概要 |
|---|---|---|
| vbBinaryCompare | 0 | 大文字小文字を区別する(バイナリーモード) |
| vbTextCompare | 1 | 大文字小文字を区別しない(テキストモード) |
次のサンプルコードはInstr()関数を使って文字列を検索しています。
先頭にヒットした場合の戻り値が「1」で、
ヒットしない場合の戻り値が「0」であることが確認できます。
Instr関数の使い方
Instr関数を使用することで、文字列内の特定の部分を検索することができます。以下のコードは、文字列内の「abc」を検索する例です。
' 文字列内の "abc" を検索
Dim str, pos
str = "abcdefg"
pos = Instr(str, "abc")
' 結果を表示
WScript.Echo pos ' 出力: 1
使用例:複数の検索
次に、Instr関数を使って文字列を検索する方法を紹介します。このスクリプトは、テキスト内の「abc」と「efg」を検索します。
' 複数の検索を行う例
Dim text, pos1, pos2
text = "abcdefg"
pos1 = Instr(text, "abc")
pos2 = Instr(text, "efg")
' 結果を表示
WScript.Echo pos1 ' 出力: 1
WScript.Echo pos2 ' 出力: 5
バイナリーモードとテキストモード
Instr関数には、バイナリーモードとテキストモードがあります。バイナリーモードでは大文字小文字を区別し、テキストモードでは区別しません。
' バイナリーモードとテキストモードの例
Dim str, pos
str = "ABCDEFG"
pos = Instr(str, "abc") ' 出力: 0(見つからない)
pos = Instr(1, str, "abc", vbTextCompare) ' 出力: 1(先頭に見つかった)
' 結果を表示
WScript.Echo pos
Instr関数の使用シナリオ
Instr関数は、以下のようなシナリオで役立ちます。
- 特定の文字列が含まれているかどうかをチェックする場合
- 文字列の中で特定の単語やフレーズの位置を確認する場合
- 入力データのバリデーションを行う場合