前のページ|次のページ

COMPLEV関数

2つの文字列間のLevenshteinの編集距離を返します。

カテゴリ: 文字
制限事項: この関数は、I18Nレベル0準拠しており、SBCSデータ向けに設計されています。この関数をDBCSまたはMBCSデータの処理に使用しないでください。

構文

COMPLEV(string-1, string-2 <, cutoff> <, modifier(s)>)

必須引数

string–1

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

string–2

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

オプション引数

cutoff

数値の定数、変数または式を指定します。実際のLevenshteinの編集距離がcutoffの値よりも大きい場合、cutoffと等しい値が返されます。

ヒント
cutoffに小さい値を使用すると、string–1およびstring–2の値が長い場合にCOMPLEVの効率が向上します。

modifier

COMPLEV関数のアクションを変更できる文字列を指定します。次の1つ以上の文字を有効な修飾子として使用できます。

iまたはI string–1およびstring–2の大文字と小文字を区別しません。
lまたはL 値を比較する前にstring–1およびstring–2の先頭の空白を削除します。
nまたはN n-literalであるすべての引数から引用符を削除し、string–1およびstring–2の大文字と小文字の区別をしません。
:(コロン) string–1string–2の短い方の文字列の長さまたは1文字(どちらか大きい方)になるように長い方の文字列を切り捨てます。
ヒント
COMPLEVは修飾子として使用される空白を無視します。

詳細

COMPLEV関数では、修飾子の出現順序に意味があります。
  • "LN"は各文字列から先頭の空白を削除した後、n-literalから引用符を削除します。
  • "NL"はn-literalから引用符を削除した後、各文字列から先頭の空白を削除します。
COMPLEV関数は末尾の空白を無視します。
COMPLEV関数はstring-1およびstring-2の間のLevenshteinの編集距離を返します。Levenshteinの編集距離は、ある文字列を他の文字列に変換するために必要な単独文字の挿入、削除または置換の回数です。Levenshteinの編集距離は対称的です。つまり、COMPLEV(string-1,string-2)COMPLEV(string-2,string-1)と同じです。

比較

COMPLEVで計算されるLevenshteinの編集距離は、COMPGEDで計算される一般化編集距離の特別なケースです。
COMPLEVの実行にかかる時間は、COMPGEDよりも大幅に短く済みます。

次の例では、Levenshteinの編集距離を計算して2つの文字列を比較します。
data test;
   infile datalines missover;
   input string1 $char8. string2 $char8. modifiers $char8.;
   result=complev(string1, string2, modifiers);
   datalines;
1234567812345678
abc     abxc
ac      abc
aXc     abc
aXbZc   abc
aXYZc   abc
WaXbYcZ abc
XYZ     abcdef
aBc     abc
aBc     AbC      i
  abc   abc
  abc   abc      l
AxC     'abc'n
AxC     'abc'n   n
;

proc print data=test;
run; 
Levenshteinの編集距離の計算による2つの文字列の比較結果の出力
Levenshteinの編集距離の計算による2つの文字列の比較結果の出力

関連項目:

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