文字列からn番目の単語を返します。
カテゴリ: | 文字 |
制限事項: | この関数は、I18Nレベル0準拠しており、SBCSデータ向けに設計されています。この関数をDBCSまたはMBCSデータの処理に使用しないでください。 |
ヒント: | この関数に相当するDBCS関数は、KSCANです。 |
文字定数、変数または式を指定します。
整数値を使用するゼロ以外の数値の定数、変数または式です。SCANで選択する文字列中の単語数を整数値で指定します。たとえば、1の値は1番目の単語、2の値は2番目の単語を示します。次のルールが適用されます。
文字のリストを初期化する文字式を指定します(省略可能)。このリストは、単語を区切る区切り文字として使用する文字を決定します。次のルールが適用されます。
ヒント | その他の修飾子を使用してcharacter-listにさらに文字を追加できます。 |
文字定数、変数または式を指定します。これらの空白以外の各文字でSCAN関数のアクションを変更します。空白は無視されます。次の文字を修飾子として使用します。
aまたはA | 文字のリストにアルファベット文字を追加します。 |
bまたはB | count引数の符合に関係なく、逆方向(左から右ではなく右から左)にスキャンします。 |
cまたはC | 文字のリストに制御文字を追加します。 |
dまたはD | 文字のリストに数字を追加します。 |
fまたはF | 文字のリストにアンダースコアと英文字(VALIDVARNAME=V7を使用したSAS変数名内の有効な最初の文字)を追加します。 |
gまたはG | グラフィック文字を文字リストに追加します。グラフィカル文字は、紙面に印刷するとイメージになる文字です。 |
hまたはH | 文字のリストに水平タブを追加します。 |
iまたはI | 大文字か小文字かは無視します。 |
kまたはK | 文字のリストに含まれていないすべての文字を区切り文字として扱うようにします。つまり、Kを指定すると、文字リストに含まれている文字が、区切り文字として省略されることなく、戻り値内に保持されます。Kを指定しない場合、文字リスト内のすべての文字が区切り文字として扱われます。 |
lまたはL | 小文字を文字リストに追加します。 |
mまたはM | 複数の連続する区切り文字、および引数string の先頭または末尾にある区切り文字が、長さゼロのワードを意味することを指定します。M修飾子を指定しない場合、複数の連続する区切り文字は1つの区切り文字として扱われ、string引数の先頭または末尾の区切り文字は無視されます。 |
nまたはN | 文字のリストに数字、アンダースコアおよび英文字(VALIDVARNAME=V7を使用したSAS変数名内に表示可能な文字)を追加します。 |
oまたはO | charlist引数およびmodifier引数を1回だけ処理します。SCAN関数の呼び出し時毎には処理されません。DATAステップ(WHERE句以外)またはSQLプロシジャでO修飾子を使用すると、character-list引数およびmodifier引数に変更がないループでSCANが呼び出されるとき、より迅速に実行できます。O修飾子はSASコードのSCAN関数の各インスタンスに個別に適用され、SCAN関数のすべてのインスタンスで同じ区切り文字および修飾子が使用されるようにはなりません。 |
pまたはP | 文字のリストに句読点を追加します。 |
qまたはQ | 引用符で囲まれた部分文字列内の区切り文字を無視します。string引数の値に、対になっていない引用符が含まれている場合、左から右へのスキャンと、右から左へのスキャンとでは異なる単語が生成されます。 |
rまたはR | SCANが返す単語から先頭および末尾の空白を削除します。Q修飾子とR修飾子を指定すると、SCAN関数は単語から先頭および末尾の空白をまず削除します。次に、SCANは単語が引用符で始まる場合には単語から引用符の層も1つ削除します。 |
sまたはS | 文字のリストに空白文字(空白、水平タブ、垂直タブ、キャリッジリターン、ラインフィード、フォームフィード)を追加します。 |
tまたはT | string引数およびcharlist引数から末尾の空白を取り除きます。両方の文字引数ではなく1つの文字引数からのみ末尾の空白を削除する場合、T修飾子を指定してSCAN関数を使用するかわりにTRIM関数を使用します。 |
uまたはU | 大文字を文字リストに追加します。 |
wまたはW | 文字のリストに印刷可能(書き込み可能)な文字を追加します。 |
xまたはX | 文字のリストに16進文字を追加します。 |
ヒント | modifier引数が文字定数の場合は、引数を引用符で囲みます。一組の引用符で複数の修飾子を指定します。引数modifierには、文字変数や文字式も指定できます。 |
data firstlast; input String $60.; First_Word=scan(string, 1); Last_Word=scan(string, -1); datalines4; Jack and Jill & Bob & Carol & Ted & Alice & Leonardo ! $ % & ( ) * + , - . / ; ;;;; proc print data=firstlast; run;
data all; length word $20; drop string; string=' The quick brown fox jumps over the lazy dog. '; do until(word=' '); count+1; word=scan(string, count); output; end; run; proc print data=all noobs; run;
data comma; keep count word; length word $30; string=',leading, trailing,and multiple,,delimiters,,'; delim=','; modif='mo'; nwords=countw(string, delim, modif); do count=1 to nwords; word=scan(string, count, delim, modif); output; end; run; proc print data=comma noobs; run;
data test; keep count word word_r; length word word_r $30; string='He said, "She said, ""No!""", not "Yes!"'; delim=','; modif='oq'; nwords=countw(string, delim, modif); do count=1 to nwords; word=scan(string, count, delim, modif); word_r=scan(string, count, delim, modif||'r'); output; end; run; proc print data=test noobs; run;
data digits; keep count digits; length digits $20; string='Call (800) 555–1234 now!'; do until(digits=' '); count+1; digits=scan(string, count, , 'dko'); output; end; run; proc print data=digits noobs; run;