以下のプログラムをご覧ください。
Y1 = index( trimn(X), "SAS");
Y2 = find( trimn(X), "SAS" ); |
どちらも、変数X に "SAS" という文字が何バイト目にあるかを取得しています。
(なんでTRIMN関数も使ってるの?という疑問は、最後に注意点として解説しています。ちなみに今回の例ではTRIMN関数なしでも問題なし)
この2つの関数の違いですが、FIND関数は、INDEX関数の進化版というイメージです。
(FIND関数には第3引数と第4引数があり、これらの引数を使うとちょっと便利)
たとえば、
変数X から大文字・小文字区別せずに "SAS" という文字が何バイト目にあるかを取得したいとします。
この場合、FIND関数では、第3引数に "i" を指定すると大文字・小文字区別せずに検索してくれます。
INDEX関数が使われがちだけど、FIND関数の方もレパートリーに加えてあげて下さい。
(「INDEX」は5文字タイピングしないといけないけど、「FIND」は4文字で済んで、ちょっとだけ楽だし)
注意点
Y2 = find( trimn(X), "SAS", "i" );
|
INDEX関数が使われがちだけど、FIND関数の方もレパートリーに加えてあげて下さい。
(「INDEX」は5文字タイピングしないといけないけど、「FIND」は4文字で済んで、ちょっとだけ楽だし)
注意点
- 日本語などのマルチバイト文字を含む場合は、以下記事の通りうまく動作しないのでご注意ください
- 以下で解説している通り、場合によって「TRIMN関数」を併用する必要があります。
- 文字値の末尾にある空白問題
- 上記リンク記事で解説している通り、変数値の長さがLENGTHより短い場合、末尾に半角スペースが入るので、想定外の結果を返す場合があります。
0 件のコメント:
コメントを投稿