- Like 演算子
- 構文
- 解説
- サンプルコード
- メモ
- パターン マッチングに関するその他の主な規則
- Like 演算子の使用例
|
|
result = string Like pattern Like
|
演算子の構文は、次の指定項目から構成されます。
指定項目 |
内容 |
result |
必ず指定します。任意の数値変数を指定します。 |
string |
必ず指定します。任意の文字列式を指定します。 |
pattern |
必ず指定します。「解説」に示すパターン マッチング規則に従った任意の文字列式を指定します。 |
|
|
文字列式 string と文字列式 pattern が一致していると、演算結果 result は真 (True) になります。一致していないときは、演算結果
result は偽 (False) になります。文字列式 string または文字列式 pattern のいずれかが Null 値のときは、演算結果
result も Null 値になります。 |
Like 演算子の動作は、Option Compare ステートメントの設定によって異なります。各モジュールに対する文字列比較の既定の方法は、Option
Compare Binary ステートメントの設定が使われます。 |
Option Compare Binary ステートメントでは、文字列比較で使われる並べ替え順序は、バイナリ文字コードのコード順によって決まります。並べ替えのコード順としては、シフト
JIS コードが使用されます。バイナリ モード (Binary) での並べ替え順序の例を次に示します。 |
A < B < E < Z < a < b < e < z < A < E < O
< a < e < o |
Option Compare Text ステートメントでは、文字列比較は、オペレーティング システムの国別情報によって決まり、日本語の場合は
50 音順およびアルファベット順で、大文字小文字を区別しない並べ替え順序になります。清音や濁音は、清音、濁音、半濁音の順序で並べ替えられます。テキスト
モード (Text) での並べ替え順序の例を次に示します。 |
(*=*) < (0=0) < (9=9) < (A=a=A=a) < (B=b=B=b) < (ア=ア=あ)
< (ン=ン=ん) < 亜 |
組み込みのパターン マッチング機能では、文字列比較のための便利な機能を利用できます。ワイルドカード、文字リスト、文字範囲などを組み合わせて使用できます。次に文字列式
pattern に指定できる文字と、一致する文字を示します。 |
文字パターン |
引数 string の中の一致する文字 |
? |
任意の 1 文字 |
* |
任意の数の文字 |
# |
任意の 1 文字の数字 (0-9) |
[charlist] |
文字リスト charlist に指定した文字の中の任意の 1 文字 |
[!charlist] |
文字リスト charlist に指定した文字以外の任意の 1 文字 |
これらのうち、"#" を除くすべての文字パターンでは、2 バイト文字 (全角文字) も 1 文字と数えて文字列比較を行います。"#"
には、1 バイト (半角) の数字だけが一致します。1 個以上の文字のリスト (charlist) を角かっこ ([ ]) で囲んで文字列式
pattern に指定すると、その中のいずれかの文字と、文字列式 string の中の該当する 1 文字が一致するかどうかを比較することができます。角かっこ
([ ]) の中の文字リストには、数字も含め、文字コードおよびシフト JIS コードのほぼすべての文字を指定できます。
|
Dim MyCheck
MyCheck = letter Like "[A-Z]"
Debug.Print MyCheck
MyCheck = letter Like "[a-z]"
Debug.Print MyCheck
MyCheck = letter Like "[A-z]"
Debug.Print MyCheck
MyCheck = letter Like "[A-Z]"
Debug.Print MyCheck
MyCheck = letter Like "[a-z]"
Debug.Print MyCheck
MyCheck = letter Like "[A-z]"
Debug.Print MyCheck
MyCheck = letter Like "[0-9]"
Debug.Print MyCheck
MyCheck = letter Like "[0-9]"
Debug.Print MyCheck
MyCheck = letter Like "[一-龠]"
Debug.Print MyCheck
MyCheck = letter Like "[あ-ん]"
Debug.Print MyCheck
MyCheck = letter Like "[ぁ-ゎ]"
Debug.Print MyCheck
MyCheck = letter Like "[あ-ゎ]"
Debug.Print MyCheck
MyCheck = letter Like "[ア-ン]"
Debug.Print MyCheck
MyCheck = letter Like "[ァ-ヮ]"
Debug.Print MyCheck
MyCheck = letter Like "[ア-ヮ]"
Debug.Print MyCheck
|
True=1
False=0 |
英語 |
数値 |
漢字 |
ひらがな |
カタカナ |
半角 |
全角 |
半角 |
全角 |
全角 |
全角 |
全角 |
大 |
小 |
大 |
小 |
大 |
小 |
大 |
小 |
F |
f |
F |
s |
0 |
0 |
亞 |
ふ |
ぉ |
フ |
ォ |
[A-Z] |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
[a-z] |
0 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
[A-z] |
1 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
[A-Z] |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
[a-z] |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
[A-z] |
0 |
0 |
1 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
[0-9] |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
[0-9] |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
0 |
[一-龠] |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
[あ-ん] |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
1 |
0 |
0 |
[ぁ-ゎ] |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
1 |
0 |
0 |
[あ-ゎ] |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
1 |
0 |
0 |
[ア-ン] |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
1 |
[ァ-ヮ] |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
1 |
[ア-ヮ] |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
1 |
|
|
特殊文字の左角かっこ ([)、疑問符 (?)、数値記号 (#)、およびアスタリスク (*) を文字列比較するには、これらの文字を角かっこで囲みます。右角かっこ
(]) をワイルドカードとしてではなくその文字自体として文字列比較を行うときには、右角かっこを他の文字と共に角かっこで囲んでリストの中に指定することはできません。右角かっこは、文字のリストに入れずに単独で指定すると、独立した文字として、文字列の中の文字と比較できます。 |
角かっこの中に指定する文字リスト charlist には、文字コードの並びの上限と下限をハイフン (-) で区切ることによって、特定の文字範囲を指定することもできます。2
バイト文字も範囲指定でき、漢字の範囲の指定もできます。たとえば、[A-Z] と指定すると、大文字の A から Z までの文字をすべてリストの中に指定したときと同じ意味になり、文字列式
string の中の対応する位置の文字が大文字のアルファベットのいずれか 1 文字であるときに一致します。1 組の角かっこの中に複数の範囲を指定するときは、それぞれの範囲の間を区切らずに記述します。 |
指定した範囲の意味は、Option Compare ステートメントの設定と、実行時のオペレーティング システムの国別情報の設定によって異なります。Option
Compare Binary ステートメントの例では、[A-E] の範囲を指定すると、A、B および E が一致します。Option Compare
Text ステートメントでは、[A-E] の範囲を指定すると、A、a、A、a、B、b、E、および e が一致します。この範囲を指定すると、E
または e と一致しません。並べ替え順序では、アクセント記号付きの文字はアクセント記号の付いていない文字の後になります。 |
|
|
文字リスト charlist の先頭に感嘆符 (!) を指定すると、文字列 string の中の文字が文字リスト charlist に指定した文字以外のときに、一致することを表します。角かっこの外に指定した感嘆符は、文字としての感嘆符と一致します。 |
ハイフン (-) を文字リスト charlist の先頭 (感嘆符が使われているときはその直後) または charlist の末尾に指定したときは、文字としてのハイフンと一致します。それ以外の位置に指定したハイフンは、ASCII
コードおよびシフト JIS コードの文字の範囲を表します。 |
文字の範囲を指定するとき、文字の順序は昇順 (低い方から高い方へ) でなければなりません。たとえば、[A-Z] と指定することはできますが、[Z-A]
と指定すると文字の範囲は正しく解釈されません。 |
角かっこの中に何も指定しないと ([])、長さ 0 の文字列 (") とみなされます。 |
|
|
一部の言語には、離れている 2 つの文字を意味する特殊文字がアルファベットに含まれています。たとえば、いくつかの言語では、文字 "a"
と "e" が共に表示されるときに、文字 "a" を使って表します。Like 演算子は、単一の特殊文字と、異なる
2 つの文字が同等であると認識します。 |
このような特殊文字を使う言語をオペレーティング システムの国別情報で設定すると、文字列式 pattern または文字列式 string 内の一方の特殊文字は、他方の文字列内の同等な連続する
2 文字と一致します。同様に角かっこで囲まれた (角かっこ自体はリスト内または範囲内にある) 文字列式 pattern 内の単一の特殊文字は、文字列式
string 内の同等の連続する 2 文字と一致します。 |
|
次の例は、Like 演算子を使って、文字列とパターンを比較します。 |
Option Explicit
Dim MyCheck
MyCheck = "aBBBa" Like "a*a" ' True を返します。
MyCheck = "F" Like "[A-Z]" ' True を返します。
MyCheck = "F" Like "[!A-Z]" ' False を返します。
MyCheck = "a2a" Like "a#a" ' True を返します。
MyCheck = "aM5b" Like "a[L-P]#[!c-e]" ' True を返します。
MyCheck = "BAT123khg" Like "B?T*" ' True を返します。
MyCheck = "CAT123khg" Like "B?T*" ' False を返します。
|
|
|
|