方法: 文字列がパターンに一致するかどうかを調べる (Visual Basic)

文字列データ型の式がパターンを満たしているかどうかを確認するには、Like 演算子を使用できます。

Like は 2 つのオペランドを受け取ります。 左オペランドは文字列式であり、右オペランドは照合に使用されるパターンを含む文字列です。 Like からは、文字列式がパターンを満たしているかどうかを示す Boolean 値が返されます。

文字列式の各文字を、特定の文字、ワイルドカード文字、文字リスト、または文字範囲と照合できます。 パターン文字列内の指定の位置は、文字列式で照合される文字の位置に対応しています。

文字列式の文字を特定の文字と照合するには

特定の文字をパターン文字列に直接含めます。 一部の特殊文字は角かっこ ([ ]) で囲む必要があります。 詳細については、「Like 演算子」を参照してください。

次の例では、myString が 1 つの文字 H で構成されているかどうかをテストします。

Dim sMatch As Boolean = myString Like "H"

文字列式の文字をワイルドカード文字と照合するには

パターン文字列に疑問符 (?) を含めます。 この位置にある任意の有効な文字が一致と見なされます。

次の例では、myString が、1 つの文字 W と、それに続く任意の値のちょうど 2 つの文字で構成されているかどうかをテストします。

Dim sMatch As Boolean = myString Like "W??"

文字列式の文字を文字のリストと照合するには

角かっこ ([ ]) をパターン文字列に含め、角かっこの内側に文字のリストを含めます。 文字をコンマやその他の区切り記号で区切らないでください。 リスト内の任意の 1 文字が一致と見なされます。

次の例では、myString が、任意の有効な文字と、それに続く AC、または E のいずれか 1 文字のみで構成されるかどうかをテストします。

Dim sMatch As Boolean = myString Like "?[ACE]"

この照合では、大文字と小文字が区別されることに注意してください。

文字列式の文字を文字の範囲と照合するには

パターン文字列に角かっこ ([ ]) を含め、角かっこ内にハイフン () で区切られた範囲内の最小文字と最大文字を含めます。 範囲内の任意の 1 文字が一致と見なされます。

次の例では、myString が、文字 num と、それに続く ijklm、または n のいずれか 1 文字のみで構成されるかどうかをテストします。

Dim sMatch As Boolean = myString Like "num[i-m]"

この照合では、大文字と小文字が区別されることに注意してください。

空の文字列の照合

Like では、シーケンス [] は長さゼロの文字列 ("") として扱われます。 [] を使用して文字列式全体が空かどうかをテストできますが、文字列式の特定の位置が空であるかどうかをテストすることはできません。 空の位置がテストする必要があるオプションの 1 つである場合は、Like を複数回使用できます。

文字列式の文字を文字のリストまたは文字なしと照合するには

  1. 同じ文字列式で Like 演算子を 2 回呼び出し、2 つの呼び出しを Or 演算子または OrElse 演算子のいずれかを使用して接続します。

  2. 1 つ目の Like 句のパターン文字列には、角かっこ ([ ]) で囲んだ文字リストを含めます。

  3. 2 つ目の Like 句のパターン文字列には、対象の位置に文字を配置しないでください。

    次の例では、7 桁の電話番号 phoneNum (ちょうど 3 桁の数字、それに続くスペース、ハイフン ()、ピリオド (.)、またはまったく文字なし、それに続くちょうど 4 桁の数字) をテストします。

    Dim sMatch As Boolean = 
      (phoneNum Like "###[ -.]####") OrElse (phoneNum Like "#######")
    

関連項目