前のページ|次のページ

DEQUOTE関数

引用符で始まる文字列から一致する引用符を削除し、閉じ引用符の右側にあるすべての文字を削除します。

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

構文

DEQUOTE(string)

必須引数

文字列(string)

文字定数、変数または式を指定します。

詳細

返される変数の長さ

DATAステップで、まだ長さが割り当てられていない変数にDEQUOTE関数から値が返される場合、その変数に引数の長さが設定されます。

基本

DEQUOTE関数で返される値は次のように決定されます。
  • stringの最初の文字が一重引用符または二重引用符でない場合、DEQUOTEはstringをそのまま返します。
  • stringの最初の2文字が両方とも一重引用符または二重引用符で、3番目の文字が異なる種類の引用符の場合、DEQUOTEは長さが0の結果を返します。
  • stringの最初の文字が一重引用符の場合、DEQUOTE関数は結果からその一重引用符を削除します。次にstringを左から右にスキャンし、他の一重引用符をさらに探します。それぞれの連続する一重引用符のペアは1つの一重引用符に変更されます。string内に終了引用符のない最初の一重引用符は削除され、その引用符の右側にあるすべての文字も削除されます。
  • stringの最初の文字が二重引用符の場合、DEQUOTE関数は結果からその二重引用符を削除します。次にstringを左から右にスキャンし、他の二重引用符をさらに探します。それぞれの連続する二重引用符のペアは1つの二重引用符に変更されます。string内に終了引用符のない最初の二重引用符は削除され、その引用符の右側にあるすべての文字も削除されます。
注: stringが引用符で囲まれた定数の場合、それらの引用符はstringの値には含まれません。そのため、定数を示す引用符はDEQUOTEを使用して削除する必要はありません。

この例では、DATAステップにおけるDEQUOTE関数での引用符の処理方法を示します。
data test;
   input string $80.;
   result=dequote(string);
   datalines;
No quotation marks, no change
No "leading" quotation marks, no change
"Matching double quotation marks are removed"
'Matching single quotation marks are removed'
"Paired ""quotation marks"" are reduced"
'Paired '' quotation marks '' are reduced'
"Single 'quotation marks' inside '' double'' quotation marks are unchanged"
'Double "quotation marks" inside ""single"" quotation marks are unchanged'
"No matching quotation mark, no problem
Don't remove this apostrophe
"Text after the matching quotation mark" is "deleted"
;
proc print noobs;
title 'Input Strings and Output Results from DEQUOTE';
run;
DEQUOTE関数での引用符の操作
DEQUOTE関数での引用符の操作
前のページ|次のページ|ページの先頭へ