VBScript: 文字列を比較する StrComp()

VBScriptで文字列を比較する場合は、 StrComp()関数を使用します。
比較モードを指定することで大文字小文字を区別するかどうかも指定できます。

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

StrComp(文字列1, 文字列2 [, 比較モード])

StrComp()関数の比較は辞書式に行われ、 戻り値は「0、1、-1」の3種類あり、 戻り値の意味は次の通りです。

戻り値内容
0文字列1と文字列2は同じ
1文字列1の方が文字列2よりも大きい
-1文字列1の方が文字列2よりも小さい

「比較モード」を省略すると下表のバイナリーモードでの置換となります。

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

次のサンプルコードでは、StrComp()関数を使って文字列を比較しています。

WScript.Echo StrComp("abc", "abc") ' 0

WScript.Echo StrComp("abc", "a")   ' 1

WScript.Echo StrComp("abc", "xyz") ' -1

大文字小文字を区別せずに比較する場合

比較モードの表をもう一度表示します。

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

デフォルトではバイナリーモードなので、 大文字小文字を区別して比較します。 区別せずに比較したい場合はテキストモードを指定してください。

次のサンプルコードはバイナリーモードの場合は「1」が返り、 テキストモードの場合は「0」が返っています。

' バイナリーモード
WScript.Echo StrComp("abc", "ABC")    ' 1

'テキストモード
WScript.Echo StrComp("abc", "ABC", 1) ' 0

文字列と数値を比較した場合

文字列「"123"」をCInt()関数で整数型に変換し、 StrComp()関数で比較してみます。

str1 = "123"

' 整数型に変換
num1 = CInt(str1)

WScript.Echo StrComp(str1, num1) ' 0

上のコードの結果は「0」となり「同じ」とみなされました。 内部で型変換して比較しているようです。

次に先頭に"0"を付けた文字列「"0123"」をCInt()関数で整数型に変換し、 StrComp()関数で比較してみます。

str1 = "0123"

' 整数型に変換
num1 = CInt(str1)

WScript.Echo StrComp(str1, num1) ' -1

この場合は「"0123"」と「"123"」の比較になりますから、 同じとはみなされません。

VBScript入門