Like 演算子 (Visual Basic)
文字列をパターンと比較します。
result = string Like pattern
指定項目
result
必ず指定します。任意のブール型 (Boolean) の変数を指定します。結果は、引数 string が引数 pattern に一致するかどうかを示す Boolean 値です。string
必ず指定します。任意のブール型 (String) の式を指定します。pattern
必ず指定します。パターン一致規則に適合させる任意の文字列 (String) 式を指定します。規則については「解説」で説明します。
解説
string の値が、pattern に含まれるパターンに一致する場合、result は True です。文字列がパターンに一致しない場合、result は False です。string と pattern の両方が空白文字列の場合、結果は 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 の文字列 ("") と見なされます。しかし、角かっこで囲まれた文字リストに含めることはできません。string 内の位置に、いずれかの文字グループが含まれているか、それとも文字が含まれていないかをチェックするには、Like を 2 回使用します。例については、「方法: 文字列がパターンに一致するかどうかを調べる (Visual Basic)」を参照してください。
文字の範囲
ハイフン (–) を使って範囲の上限と下限を設定することで、charlist に文字の範囲を指定できます。たとえば、[A–Z] と指定すると、string 内の文字の位置に A から Z までの文字のいずれかが含まれている場合に一致となります。[!H–L] と指定すると、対応する文字の位置に H から L までの範囲に含まれない文字がある場合に一致となります。
文字の範囲を指定する場合、文字は昇順で指定する必要があります。つまり、[A–Z] は有効なパターンですが、[Z–A] は無効なパターンです
複数の文字範囲
同じ文字位置に対して複数の範囲を指定するには、同じ角かっこの中に、デリミターなしで範囲を指定します。たとえば、[A–CX–Z] と指定すると、string 内の対応する文字位置に A から C まで、および X から Z までの文字が含まれているときに一致となります。
ハイフンの使用
ハイフン (– が charlist の先頭 (感嘆符がある場合はその直後) または末尾にある場合は、ハイフン自体を検索します。他の場所にハイフンがある場合は、ハイフンの両側の文字を上限および下限とする、文字の範囲を表します。
照合シーケンス
指定した範囲の意味は、実行時に有効な文字順序により異なります。つまり、OptionCompare と、コードが実行されるシステムのロケール設定で決まります。OptionCompareBinary では、[A–E] という範囲は A、B、C、D、および E に一致します。OptionCompareText では、[A–E] は A、a、À、à、B、b、C、c、D、d、E、および e に一致します。アクセント付き文字の並べ替え順序はアクセントなしの文字よりも後なので、この範囲は Ê および ê には一致しません。
Digraph 文字
言語によっては、独立した 2 文字を表す文字がアルファベットに含まれています。たとえば、いくつかの言語では æ という文字が使用されます。これは、a と e が連続する場合に、その 2 文字を表す文字です。Like 演算子では、この digraph 文字 1 文字と独立した 2 文字が同じものとして認識されます。
digraph 文字を使用する言語がシステム ロケール設定に指定されている場合、pattern または string のどちらかにその digraph 文字 1 文字が含まれると、他方の文字列では、同じ意味を持つ連続した 2 文字を検索します。同様に、角かっこ内の pattern に digraph 文字 1 文字が含まれると、string 内では同じ意味を持つ連続した 2 文字を検索します。
オーバーロード
Like 演算子は オーバーロード できます。つまり、オペランドがそのクラスまたは構造体の型であれば、クラスまたは構造体がこの動作を再定義できます。このようなクラスまたは構造体でこの演算子を使用している場合、再定義された動作を確認してください。詳細については、「演算子プロシージャ (Visual Basic)」を参照してください。
使用例
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*"
参照
処理手順
方法: 文字列がパターンに一致するかどうかを調べる (Visual Basic)