VBScript: 文字列を検索する Instr()

VBScriptで文字列を検索する場合は、 Instr()関数を使用します。

Instr()関数の書式は次の通りです。

書式
Instr([開始位置,] 文字列, 検索ワード [, 比較モード])

文字列から検索ワードを検索し、最初に見つかった位置を返します。 検索開始位置からの位置ではなく、文字列の先頭からの位置を返します (VBScriptでは、文字列の先頭位置は「0」ではなく「1」です)。
検索ワードが見つからなかった場合の戻り値は「0」です。

「開始位置」と「比較モード」は省略可能です。 開始位置を省略すると先頭から検索します。

「比較モード」の値は次の通りで、省略した場合はバイナリーモードでの 検索となります。

定数概要
vbBinaryCompare0大文字小文字を区別する(バイナリーモード)
vbTextCompare1大文字小文字を区別しない(テキストモード)

次のサンプルコードは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関数は、以下のようなシナリオで役立ちます。

  • 特定の文字列が含まれているかどうかをチェックする場合
  • 文字列の中で特定の単語やフレーズの位置を確認する場合
  • 入力データのバリデーションを行う場合

関連記事:文字列を右から検索する InstrRev()

VBScript入門