Like 演算子 (Visual Basic)

文字列をパターンと比較します。

重要

Like 演算子は、現在、.NET Core および .NET Standard のプロジェクトではサポートされていません。

構文

result = string Like pattern  

指定項目

result
必須です。 任意の Boolean 変数。 結果は、stringpattern を満たすかどうか示す Boolean 値です。

string
必須です。 任意のブール型 ( String ) の式を指定します。

pattern
必須です。 「解説」で説明されているパターン マッチング規則に準拠した String 式を指定します。

Remarks

string の値が pattern に格納されているパターンを満たす場合、resultTrue になります。 文字列がパターンを満たさない場合、resultFalse になります。 stringpattern の両方が空の文字列の場合、結果は True になります。

比較方法

Like 演算子の動作は、Option Compare ステートメントに基づきます。 各ソース ファイルの既定の文字列比較方法は Option Compare Binary です。

パターンのオプション

組み込みのパターン マッチングでは、文字列比較に使用できるさまざまなツールが用意されています。 パターン マッチング機能を使用すると、string 内の各文字を、特定の文字、ワイルドカード文字、文字リスト、または文字範囲と一致させることができます。 次の表に、pattern で使用できる文字と、それらが何に一致するかを示します。

pattern 内の文字 string 内の以下に一致
? 任意の 1 文字
* 0 個以上の文字
# 任意の 1 つの数字 (0 ~ 9)
[charlist] charlist 内の任意の 1 文字
[!charlist] charlist 内にない任意の 1 文字

文字リスト

角かっこ ([ ]) で囲まれた 1 つ以上の文字のグループ (charlist) と、string 内の任意の 1 文字を一致させることができます。このグループには、数字を含むほぼすべての文字コードを含めることができます。

charlist の先頭にある感嘆符 (!) は、charlist 内の文字を除く任意の文字が string で見つかった場合に一致することを意味します。 感嘆符を角かっこの外側で使用すると、感嘆符自体を照合できます。

特殊文字

特殊文字の左角かっこ ([)、疑問符 (?)、番号記号 (#)、およびアスタリスク (*) を一致させるには、これらを角かっこで囲みます。 右角かっこ (]) は、グループ内でそれ自体を一致させるために使用できませんが、グループの外側で個別の文字として使用できます。

文字シーケンス [] は、長さが 0 の文字列 ("") と見なされます。 ただし、これを角かっこで囲まれた文字リストの一部にすることはできません。 Like を 2 回使用すると、string 内のある場所に、文字グループのいずれかの文字が含まれているか、または文字がまったく含まれていないか確認できます。 例については、「方法: 文字列がパターンに一致するかを調べる」を参照してください。

文字範囲

ハイフン () を使用して範囲の下限と上限を区切ることにより、charlist で文字の範囲を指定できます。 たとえば、string 内の対応する文字位置に、AZ の範囲の任意の文字が含まれている場合、[A–Z] は一致と見なされます。また、対応する文字位置に HL の範囲外の文字が含まれている場合、[!H–L] は一致と見なされます。

文字の範囲を指定する場合、昇順の並べ替え順序、つまり、最小から最大の順序で指定する必要があります。 したがって、[A–Z] は有効なパターンですが、[Z–A] は有効ではありません。

複数の文字範囲

同じ文字位置の複数の範囲を指定するには、区切り記号を使用せずに同じ角かっこ内にそれらの範囲を配置します。 たとえば、string 内の対応する文字位置に範囲 AC または範囲 XZ 内の文字が含まれる場合、[A–CX–Z] は一致と見なされます。

ハイフンの使用

ハイフン () を charlist の先頭 (感嘆符がある場合はその後)、または末尾に配置することで、ハイフン自体と一致させることができます。 その他の場所では、ハイフンは、ハイフンの両側の文字によって定められた文字の範囲を示します。

照合順序

指定した範囲の意味は、実行時の文字の順序によって異なります。Option Compare と、コードが実行されるシステムのロケール設定によって決まります。 Option Compare Binary を使用すると、範囲 [A–E]ABCD、および E と一致します。 Option Compare Text を使用すると、[A–E]AaÀàBbCcDdE、および e と一致します。 この範囲は Ê および ê とは一致しません。これは、並べ替え順序で、アクセント記号付き文字がアクセント記号なし文字の後になるためです。

digraph 文字

言語によっては、2 つの個別の文字を表すアルファベット文字があります。 たとえば、いくつかの言語では、文字 æ を使用して文字 a と文字 e (これらが一緒に現れる場合) を表します。 Like 演算子は、1 つの digraph 文字と 2 つの個別文字が同等であると認識します。

digraph 文字を使用する言語がシステムのロケール設定で指定されている場合、pattern または string に 1 つの digraph 文字があると、その digraph 文字は他の文字列内の同等の連続する 2 文字に一致します。 同様に、角かっこ (それ自体、リスト内、または範囲内) で囲まれた pattern 内の digraph 文字は、string 内の同等の連続する 2 文字と一致します。

オーバーロード

Like 演算子は "オーバーロード" できます。つまり、オペランドの型がクラスまたは構造体であるとき、そのクラスまたは構造体で、演算子の動作を再定義できます。 コードで、そのようなクラスまたは構造体に対してこの演算子が使用される場合は、再定義された動作を理解していることを確認してください。 詳細については、「 Operator Procedures」を参照してください。

この例では、Like 演算子を使用して、文字列をさまざまなパターンと比較します。 結果は、各文字列がパターンを満たすかどうかを示す Boolean 変数に格納されます。

Dim testCheck As Boolean
' The following statement returns True (does "F" satisfy "F"?)
testCheck = "F" Like "F"
' The following statement returns False for Option Compare Binary
'    and True for Option Compare Text (does "F" satisfy "f"?)
testCheck = "F" Like "f"
' The following statement returns False (does "F" satisfy "FFF"?)
testCheck = "F" Like "FFF"
' The following statement returns True (does "aBBBa" have an "a" at the
'    beginning, an "a" at the end, and any number of characters in 
'    between?)
testCheck = "aBBBa" Like "a*a"
' The following statement returns True (does "F" occur in the set of
'    characters from "A" through "Z"?)
testCheck = "F" Like "[A-Z]"
' The following statement returns False (does "F" NOT occur in the 
'    set of characters from "A" through "Z"?)
testCheck = "F" Like "[!A-Z]"
' The following statement returns True (does "a2a" begin and end with
'    an "a" and have any single-digit number in between?)
testCheck = "a2a" Like "a#a"
' The following statement returns True (does "aM5b" begin with an "a",
'    followed by any character from the set "L" through "P", followed
'    by any single-digit number, and end with any character NOT in
'    the character set "c" through "e"?)
testCheck = "aM5b" Like "a[L-P]#[!c-e]"
' The following statement returns True (does "BAT123khg" begin with a
'    "B", followed by any single character, followed by a "T", and end
'    with zero or more characters of any type?)
testCheck = "BAT123khg" Like "B?T*"
' The following statement returns False (does "CAT123khg"?) begin with
'    a "B", followed by any single character, followed by a "T", and
'    end with zero or more characters of any type?)
testCheck = "CAT123khg" Like "B?T*"

関連項目