簡體   English   中英

C#比較相似的字符串

[英]C# comparing similar strings

我有一個帶有一些文件名(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

我已經閱讀了有關Levenshtein距離的信息,並在Framework( SignumFramework Utilities )中使用了它的實現。 它在第2行和第3行中向我返回distance = 1。但是在我的情況下,第3行比第2行更匹配。

還有另一種方法可以更好地比較相似的字符串嗎? 有什么更靈活的方法嗎?

作為字符串進行比較時,“ 9.2”的匹配度比“ 5.1”的“ 5.1”更好。 如果要對版本號進行數字評估,則必須解析字符串,以便可以分別比較字符串部分和數字部分。

有一個simlar問題在這里 ,也許有些答案會出現有關?

您的相似性標准可以是其他幾個條件的組合。 一個可能是Levenshtein距離,另一個可能是例如最長的公用子字符串或前綴/后綴。

最長的常見子字符串問題實際上是編輯距離的一種特殊情況,當替換被禁止並且僅精確的字符匹配,插入和刪除是允許的編輯操作時(請參見此處 )。

字符串相似性的其他指標在此處介紹。

正則表達式可用於獲取與名稱匹配的項目。 可以在比賽中的正則表達式組中收集版本號,並將其解析為.net對象(例如十進制),您可以使用該對象比較哪個是最接近的。

這個SO問題有相當詳盡的答案。 底部的鏈接是我為soundex,雙重元音,PHP相似性和levenstein建立了C#實現。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM