前のページ|次のページ

ANYALNUM関数

文字列から英数字を検索し、最初に検索された文字の位置を返します。

カテゴリ: 文字
制限事項: この関数は、I18Nレベル1に準拠しています。英語以外の言語を使用する場合、可能な限りI18Nレベル1の関数の使用は避けてください。特定の環境下では、I18Nレベル1の関数は、2バイト文字セット(DBCS)または複数バイト文字セット(MBCS)エンコーディングを使用すると正常に動作しない場合があります。

構文

ANYALNUM(string <,start>)

必須引数

string

検索する文字の定数、変数または式を指定します。

オプション引数

start

検索を開始する位置を指定し、検索の方向を指定する整数です(省略可能)。

詳細

ANYALNUM関数の結果は、有効になっている変換テーブル(TRANTAB=システムオプション (SAS各国語サポート(NLS):リファレンスガイド) を参照)に直接依存し、ENCODING およびLOCALEシステムオプションに間接的に依存します。
ANYALNUM関数は、文字列で最初に出現する数字、大文字または小文字を検索します。このような文字が検出されると、ANYALNUMはその文字の文字列の位置を返します。このような文字が検出されないと、ANYALNUMは0の値を返します。
1つの引数のみを使用する場合、ANYALNUMは文字列の先頭から検索を開始します。2つの引数を使用する場合、第2引数startの絶対値で検索の開始位置を指定します。検索方向は次のように決まります。
  • startの値が正の場合、検索は右方向に進みます。
  • startの値が負の場合、検索は左方向に進みます。
  • startの値が文字列の負の長さよりも小さい場合、文字列の末尾から検索が開始されます。
ANYALNUMは、次のいずれかに該当する場合にゼロ値を返します。
  • 検索文字が見つからない。
  • startの値が文字列の長さよりも大きい。
  • startの値が0になっている。

比較

ANYALNUM関数は、文字列から英数字を検索します。NOTALNUM関数は、文字列から英数字でない文字を検索します。

例1: 左から右への文字列のスキャン

次の例では、ANYALNUM関数を使用して文字列から左から右の順に英数字を検索します。
data _null_;
   string='Next = Last + 1;';
   j=0;
   do until(j=0);
      j=anyalnum(string, j+1);
      if j=0 then put +3 "That's all";
      else do;
         c=substr(string, j, 1);
         put +3 j= c=;
      end;
   end;
run;
次の出力がログに書き込まれます。
   j=1 c=N j=2 c=e j=3 c=x j=4 c=t j=8 c=L j=9 c=a j=10 c=s j=11 c=t j=15 c=1 That's all

例2: 右から左への文字列のスキャン

次の例では、ANYALNUM関数を使用して文字列から右から左の順に英数字を検索します。
data _null_;
   string='Next = Last + 1;';
   j=999999;
   do until(j=0);
      j=anyalnum(string, 1-j);
      if j=0 then put +3 "That's all";
      else do;
         c=substr(string, j, 1);
         put +3 j= c=;
      end;
   end;
run;
次の出力がログに書き込まれます。
   j=15 c=1 j=11 c=t j=10 c=s j=9 c=a j=8 c=L j=4 c=t j=3 c=x j=2 c=e j=1 c=N That's all

関連項目:

関数:
前のページ|次のページ|ページの先頭へ