スポンサーリンク

FIND関数とSEARCH関数の違い

関数の応用

文字列の中から指定した文字を探し、何文字目かを調べることができる、FIND関数とSEARCH関数という、2つの関数が存在します。

この2つの関数、どういう効果がある関数なのかだけで言うと、全く同じなんです。

ですが、それぞれの関数の解説記事でも触れてますが、細かい部分で違いがあるんです。

今回はその違いについての詳細や実験をしていきます。

FIND関数とSEARCH関数の機能についてはこちら

今回はあくまでもFIND関数とSEARCH関数の違いについてを書いていきます。

そもそもFIND関数とSEARCH関数がどういう機能なの?という方は下記記事をご覧ください。

何が違うの?

FIND関数とSEARCH関数、それぞれに何ができて、何ができないのかというと、以下の2点になります。

  • 大文字と小文字を区別するか
  • ワイルドカード(*と?)が使えるか

そしてFIND関数とSEARCH関数で、それぞれどう動くのかというと

【FIND関数】
・大文字と小文字を区別する
・ワイルドカードは使えない
【SEARCH関数】
・大文字と小文字を区別しない
・ワイルドカードは使える

こうして比較してみると、SEARCH関数は緩く、FIND関数の方がきつい印象ですね。

実験してみよう

何が違うのかわかったら、今度は実験・比較をしてみましょう。

大文字・小文字

まずは大文字と小文字の区別について。

このように、Seiuchi is Beautifulという文字列から、大文字のSを探そうとした場合は、FIND関数もSEARCH関数も、先頭のSを探し出すため、共に結果は1となった。

しかし、小文字のsを探そうとした場合は、FIND関数では先頭にある大文字のSを無視し、10文字目にある小文字のsを探し出し、10という結果となった。

SEARCH関数の方は、小文字のsを探そうとした場合でも、先頭の大文字のSを探し出すので、結果は1となっている。

ワイルドカード

次にワイルドカードを使ってみましょう。

このように、FIND関数ではワイルドカードを使用すると、#VALUE!となってしまいます。

ですがSEARCH関数ではワイルドカードが使えるので、ちゃんと機能した結果が返ってきていますね。

太?は、太のあとに何か1文字ある場合を探してますので、太郎という文字を探し出しました。

*太は、太の前に何かの文字がある場合(文字数の制限なし)を探してますので、セイウチ太を探し出したという結果になりました。

全角と半角は区別しない

大文字・小文字の区別と、全角・半角の区別って、混同しますよね。(するよな?)

そんなわけで、全角と半角はFIND関数でもSEARCH関数でも区別されずにエラーになるというケースも実験してみましょう。

お気づきのとおり、記事の文字数稼ぎです。

はい、エラーですね。

今回は全角カナを使っているセイウチ太郎から、半角のセを探そうとしてエラーになっています。

これが半角カナを使っているセイウチ太郎なら、問題なく半角のセを見つけ出し、1という結果になります。(この場合逆に、全角のセを探すとエラーとなる)

セイウチ太郎なんて存在がエラーみたいなもんなんやからエラーになっただけやろ例題が悪いんじゃ例題が。などの文句は一切受け付けません。

まとめ

こういう事。

FIND関数 SEARCH関数
大・小文字 区別する 区別しない
ワイルドカード 使えない 使える

 

 

コメント

タイトルとURLをコピーしました