2017年11月16日木曜日

【小ネタ】INDEX関数 vs FIND関数




以下のプログラムをご覧ください。

  Y1 = index( X, "SAS");
  Y2 = find( X, "SAS" );

どちらも、変数X に "SAS" という文字が何バイト目にあるかを取得しています。



この2つの関数の違いですが、FIND関数は、INDEX関数の進化版というイメージです。
(FIND関数には第3引数と第4引数があり、これらの引数を使うとちょっと便利)


たとえば、
変数X から大文字・小文字区別せずに "SAS" という文字が何バイト目にあるかを取得したいとします。
この場合、それぞれ以下のような書き方が出来ます。

  Y1 = index( upcase(X), "SAS" );
  Y2 = find( X, "SAS", "i" );

  • INDEX関数では、UPCASE関数で大文字にしてやる必要があります。
  • FIND関数では、第3引数に "i" を指定すると大文字・小文字区別せずに検索してくれるので、非常にシンプルな文になります。



INDEX関数が使われがちだけど、FIND関数の方もレパートリーに加えてあげて下さい。
(「INDEX」は5文字タイピングしないといけないけど、「FIND」は4文字で済んで、ちょっとだけ楽だし)



注意点
日本語などのマルチバイト文字を含む場合は、以下記事の通りうまく動作しないのでご注意ください。
関数の落とし穴


0 件のコメント:

コメントを投稿