レーベンシュタイン編集距離を使用して、2 つの文字列がどの程度似ているかを調べています。2つの文字列はそのままです。最初のものは、もしあったとしても、2 つのうち長い方です。また、他も比較したいのは、切り捨てられていない、変更されていない文字列です。2 番目の文字列は末尾が切り捨てられ、文字が欠落している可能性があります。複数の一意の文字列 1 と文字列 2 が存在する可能性があります。
2 番目の文字列のリストを読み込んで、それぞれが「[string two] - $0.00」という形式の行に含まれているので、文字列 2 にスペース、ダッシュ、スペース、そして価格が続きます。
したがって、2 番目の文字列 (形式) のリストがあり、2 つのオプションがあります。価格と「 - 」を削除するか、そのままにしてください。
外すと。各文字列を 2 つ読み取り、区切り文字「$」でトークン化します。文字列 2 の長さがわからないので、stringtwo.removeAll("-") を実行してダッシュを削除してから、空白の .trim() を実行する必要があります。ストリング 2 にダッシュがある場合、それも不本意に削除されます。したがって、これにより、正確な文字列(levenstein = 0)、切り捨てられたが正確な文字列(文字列は長さの文字列1まで同じ-levenstein)、切り捨てられ、整数量のダッシュが欠落しています(文字列は間のいくつかの場所で同じです)のいずれかを取得しますダッシュ、および切り捨てられた場合は末尾も欠落している)、または切り捨てられていないが整数のダッシュが欠落している。
残したら。引き続き各文字列を 2 つ読み取り、区切り文字「$」でトークン化します。これで、文字列 2 "[string two] - " のこの形式ができました。したがって、すべてのレーベンスタイン距離は 3 ずれます。"dog food is yummy" と比較しようとする文字列 2 は "dog food is yum -" であり、levD = 3 ですが、これは文字列 2 "dog food is yummy -" と同じ levD です。
ご覧のとおり、両方のオプションで問題が発生します。文字列 2 の入力リストを文字列 1 のリストに一致させようとしても、プログラムでこれらの問題を克服できないようです。
誰でもこれを行うためのより良い方法を見ることができますか?これを問題なくするために使用できる他の文字列コンパレータはありますか?