前のページ|次のページ

COUNTW関数

文字列中の単語数を数えます。

カテゴリ: 文字

構文

COUNTW(<string> <, <character(s)> <, <modifier(s)>>>)

オプション引数

string

文字定数、変数または式を指定します。この中にある単語を数えます。

character

文字のリストを初期化する任意の文字定数、変数または式を指定します。リスト中の文字は単語を区切るための区切り文字です(ただし、modifier引数にK修飾子を使用しない場合)。K修飾子を指定すると、このリストにないすべての文字が区切り文字となります。他の修飾子を使うことでリストに文字をさらに追加できます。

ヒント 文字引数にNULLを指定できます。NULL引数は長さがゼロの文字列として扱われます。数値引数はヌルにできません。

modifier

文字定数、変数または式を指定します。空白でない文字はそれぞれCOUNTW関数のアクションを変更します。修飾子として使用できる文字(大文字または小文字)は次のとおりです。

空白 無視されます。
aまたはA 文字のリストにアルファベット文字を追加します。
bまたはB 左から右方向ではなく、右から左方向に数えます。右から左方向へ数えて変化があるのは、Q修飾子を使っている場合で、かつ一組になっていない引用符が文字列中にある場合のみです。
cまたはC 文字のリストに制御文字を追加します。
dまたはD 文字のリストに数字を追加します。
fまたはF アンダースコア文字および英文字(VALIDVARNAME=V7でSAS変数名の先頭に使用できる文字)を文字リストに追加します。
gまたはG グラフィック文字を文字リストに追加します。
hまたはH 文字のリストに水平タブを追加します。
iまたはI 大文字か小文字かは無視します。
kまたはK 文字のリストに含まれていないすべての文字を区切り文字として扱うようにします。Kを指定しない場合、文字のリストに含まれているすべての文字が区切り文字として扱われます。
lまたはL 小文字を文字リストに追加します。
mまたはM 複数の連続する区切り文字、およびstring引数の先頭または末尾の区切り文字が、長さがゼロの単語を参照するように指定します。IM修飾子を指定しない場合、複数の連続する区切り文字は1つの区切り文字として扱われ、string引数の先頭または末尾の区切り文字は無視されます。
nまたはN 数字、アンダースコアおよび英文字(VALIDVARNAME=V7でSAS変数名の先頭文字の次に使用できる文字)を文字リストに追加します。
oまたはO characters引数およびmodifier引数をCOUNTW関数を呼び出するごとに処理するのではなく、1回だけ処理します。DATAステップ(WHERE句を除く)またはSQLプロシジャでO修飾子を使用すると、chars引数およびmodifier 引数が変更されないループでCOUNTWを呼び出すときに、より迅速に実行できます。
pまたはP 文字のリストに句読点を追加します。
qまたはQ 引用符で囲まれた部分文字列内の区切り文字を無視します。stringの値に、一致しない引用符が含まれる場合、左から右へのスキャンでは、右から左へのスキャンとは異なる単語が生成されます。
sまたはS 文字リストに空白文字(空白、水平タブ、垂直タブ、キャリッジリターン、ラインフィード、フォームフィード)を追加します。
tまたはT stringstring引数およびchars引数から末尾の空白を取り除きます。
uまたはU 大文字を文字リストに追加します。
wまたはW 印刷可能文字を文字リストに追加します。
xまたはX 文字のリストに16進文字を追加します。

詳細

"単語"の定義

COUNTW関数では、次の特性のいずれかを持つ部分文字列を"単語"と呼びます。
  • 左側が区切り文字または文字列の先頭で境界設定されている
  • 右側が区切り文字または文字列の末尾で境界設定されている
  • 区切り文字を含まない。ただし、Q修飾子を使用している場合で、引用符を含む部分文字列内に区切り文字が囲まれている場合を除きます。
注: "単語"の定義はSCAN関数およびCOUNTW関数の両方に共通します。
区切り文字とは、単語を区切るために指定できる数個の文字のいずれかを意味します。

ASCII環境およびEBCDIC環境でCOUNTW関数を使用する

COUNTW関数で引数を2つしか使用しない場合、ASCII文字とEBCDIC文字のいずれをコンピュータで使用しているかによってデフォルトの区切り文字が変わります。
  • お使いのコンピュータでASCII文字が使用されている場合、デフォルトの区切り文字は次のようになります。
    空白 !$ % & ( ) * + , - ./ ; < ^ |
    ^文字のないASCII環境の場合、SCAN関数はかわりに~文字を使用します。
  • お使いのコンピュータがEBCDIC文字を使用している場合、デフォルトの区切り文字は次のようになります。
    空白 !$ % & ( ) * + , - ./ ; < ¬ | ¢

M修飾子を使用する

M修飾子を使用しない場合、単語には少なくとも1つの文字が含まれている必要があります。M修飾子を使用する場合、単語の長さをゼロとすることができます。この場合、単語数は文字列中の区切り文字数に1を加算した数です。Q修飾子を使用するときに引用符に囲まれている文字列中の区切り文字の数ではありません。

COUNTW関数にM修飾子およびP修飾子を使う方法を次の例に示します。
data test;
   length default blanks mp 8;
   input string $char60.;
   default=countw(string);
   blanks=countw(string, ' ');
   mp=countw(string, , 'mp');
   datalines;
The quick brown fox jumps over the lazy dog.
2+2=4
//unix/path/names/use/slashes
\\Windows\Path\Names\Use\Backslashes
;
run;

proc print noobs data=test;
run;
COUNTW関数からの出力
COUNTW関数からの出力

関連項目:

CALLルーチン:
前のページ|次のページ|ページの先頭へ