1

いくつかのファイル名を持つジェネリック (LIST1) と、名前の完全なリスト (LIST2) を持つ別の biggeneric があります。LIST1 の名前を LIST2 の類似の名前と一致させる必要があります。例えば

LIST1
- **MAIZE_SLIP_QUANTITY_3_9.1.aif**

LIST 2
1- TUTORIAL_FAILURE_CLINCH_4.1.aif
2- **MAIZE_SLIP_QUANTITY_3_5.1.aif**
3- **MAIZE_SLIP_QUANTITY_3_9.2.aif**
4- TUTORIAL_FAILURE_CLINCH_5.1.aif
5- TUTORIAL_FAILURE_CLINCH_6.1.aif
6- TUTORIAL_FAILURE_CLINCH_7.1.aif
7- TUTORIAL_FAILURE_CLINCH_8.1.aif
8- TUTORIAL_FAILURE_CLINCH_9.1.aif
9- TUTORIAL_FAILURE_PUSH_4.1.aif

レーベンシュタイン距離について読み、フレームワーク ( SignumFramework Utilities )でその実装を使用しました。 2 行目と 3 行目で distance=1 が返されます。しかし、私の場合、3 行目は 2 行目よりも一致しています。

同様の文字列を比較するための別の方法はありますか? もっと柔軟なもの?

4

4 に答える 4

5

文字列として比較すると、「9.1」は「5.1」よりも「9.2」の方が一致するわけではありません。バージョン番号を数値で評価する場合は、文字列部分と数値部分を別々に比較できるように、文字列を解析する必要があります。

于 2009-04-14T12:00:01.473 に答える
1

この SO questionにはかなり網羅的な回答があります。下部には、soundex、double metaphone、PHP の類似性、およびレーベンスタインの C# 実装へのリンクがあります。

于 2009-04-14T12:30:12.743 に答える
1

正規表現を使用して、名前に一致するアイテムを取得できます。バージョン番号は、一致の正規表現グループに収集され、最も近いものを比較するために使用できる .net オブジェクト (10 進数など) に解析されます。

于 2009-04-14T12:14:11.300 に答える
1

類似性基準は、他のいくつかの基準を組み合わせたものにすることができます。1 つはレーベンシュタイン距離であり、他のものは、たとえば、最長共通部分文字列または接頭辞/接尾辞である可能性があります。

最長の一般的な部分文字列の問題は、実際には編集距離の特殊なケースであり、置換が禁止され、完全な文字の一致、挿入、および削除のみが編集操作で許可されます (こちらを参照)。

文字列の類似性に関するその他の指標については、こちらで説明しています。

于 2009-04-14T12:12:36.623 に答える