ワイルドカードとは
ワイルドカードとは端的に言うと、
任意の文字列を指定する際に使用する特殊文字のことです。
基本的には以下の2つを覚えておけば良いと思います。
Like演算子とワイルドカードを使うことで「あいまい検索」をすることができます。
具体例を使って以下で説明します( ..)φメモメモ
やりたいこと:対象の文字列があるかを調べる
「*」アスタリスクの使い方
以下に文字列型の変数str文字列があるとします。
str文字列 = "野菜カレー"
この文字列に"カレー"というキーワードが含まれているかどうかを調べてみましょう。
ワイルドカードの「*」を使ってみます。
str文字列 like "*カレー*"
メッセージボックスに表示させてみましょう。
結果↓
「*」は任意の0文字以上を表すので、0文字でも検索に引っかかるということを覚えておきましょう。
str文字列 like "*カレー"でも結果はTrueとなります。
str文字列 like "カレー*"の場合は結果はFalseになります。
もしstr文字列に"カレーうどん"が代入されていたら、
str文字列 like "カレー*"はTrueになりますね。
「?」クエスチョンマークの使い方
次にワイルドカードの「?」を使ってみましょう。
同じくstr文字列には"野菜カレー"が格納されているとします。
str文字列 = "野菜カレー"
この時、以下のように入力すると結果はどうなるでしょうか?
str文字列 like "?カレー"
メッセージボックスに表示させてみましょう。
結果↓
「?」は任意の1文字を表すワイルドカードなのでこの場合はFalseとなります。
str文字列 like "??カレー"の場合はTrueが返ります。
ContainsとLikeの違い
前回の記事でContainsの使い方について紹介しました。
Containsを使用することで、文字列の中に対象の文字列があるかどうかを調べることができます。
ContainもLikeも特定のキーワードを検索する場合に使用することができますが、両者の違いは何でしょうか?
違いはズバリLikeにはできるけど、Containsにはできないことがあるです。
再びカレーを使って説明します。
str文字列 = "野菜カレー"
この時、
str文字列.Contains("カレー")
str文字列 like "*カレー*"
上記の2つは全く同じことを表しており、結果はどちらもTrueとなります。
しかし、Likeの場合は他にも書き方がありました。
str文字列 like "カレー*"
str文字列 like "カレー???"
上記のように書くと、Containsでは結果がTrueでもLikeの場合はFalseになります。
もう少し言うと
Containsは「野菜カレー」と「カレーうどん」の違いが判定できませんが、
Likeを使えば違いを判定することができるということです。
ひとこと
両者の違いがわかりましたか?
ワイルドカードやLike演算子と聞くとややこしそうなイメージがあるかもしれませんが、慣れればそんなことはありません。
とても便利な機能なので、ぜひ使ってみてください!(^^)!
文字列操作については他にも紹介しているので、ぜひ参考にしてみてください!