C#WinApp:比方說,我搜索dtg,但我搜索的項目是dvg,dz,dxg ...所以我希望它爲我找到dvg,因爲它更接近dtg我正在尋找。 我知道這裏有一些NP-hard算法,但我真的不想在這上面花費大量的時間。有沒有什麼字符串方法可以做到接近這個?或者可以用一些額外的代碼留下來做到這一點?查找最近的字符串匹配
回答
你想使用Soundex。如果我能找到一些代碼的鏈接,我會給你一些。我用Soundexes做了一個拼寫檢查器,而這正是你要找的。
在此期間,該谷歌搜索應該有所幫助:
這裏有一個很好的C#實現:http://www.builderau.com.au/program/csharp/print.htm?TYPE=story&AT=339291792-339028385t-320002002c
謝謝,我會研究它,請讓我知道,如果你找到它的結果。 – Bohn 2010-11-05 00:11:33
你需要一個指標描述兩個字符串之間的區別。一種常用的方法是使用Levenshtein distance,它使用幾行C#代碼快速實現(代碼文件可在線獲取)。
我找到了一個MSDN的weblog實現。但整個算法不是我所需要的......好吧,我正在搜索「B」,並在列表中有「AK」和「BOB」,猜猜看是什麼?算法正在選擇「AK」...補充!至少只是爲了「BOB」,因爲它們都以它開頭....我的意思是實現是正確的,但算法本身不是我正在尋找的 – Bohn 2010-11-05 16:36:22
public static string ClosestWord(string word, string[] terms)
{
string term = word.ToLower();
List<string> list = terms.ToList();
if (list.Contains(term))
return list.Find(t => t.ToLower() == term);
else
{
int[] counter = new int[terms.Length];
for (int i = 0; i < terms.Length; i++)
{
for (int x = 0; x < Math.Min(term.Length, terms[i].Length); x++)
{
int difference = Math.Abs(term[x] - terms[i][x]);
counter[i] += difference;
}
}
int min = counter.Min();
int index = counter.ToList().FindIndex(t => t == min);
return terms[index];
}
}
請不要在沒有解釋的情況下發布代碼 – Cybermaxs 2012-10-02 12:23:28
- 1. mongodb最接近的字符串匹配查找
- 2. 最接近的匹配字符串
- 3. 使用SQL查詢查找最接近的匹配字符串及其子串
- 4. 將最近的字符串與特定的字符串匹配
- 5. 找到最接近的匹配字符串數組php
- 6. 近似字符串匹配
- 7. 字符串近似值(從字典中獲取最近匹配的字符串)
- 8. SQL查詢在字符串開頭的最接近匹配
- 9. 找到最匹配的字符串
- 10. 找到最匹配的字符串
- 11. 查找匹配的部分字符串
- 12. perl:字符串匹配找到最長的子字符串
- 13. 與R匹配的字符串:尋找最佳匹配
- 14. Ruby中的近似字符串匹配
- 15. C中的近似字符串匹配?
- 16. matlab中的近似字符串匹配
- 17. 查找和匹配字符串
- 18. 查找字符串匹配使用Python
- 19. 匹配傳入的字符串與查找字符串
- 20. 查找數組中最長的匹配字符串
- 21. 查找字符串值的最佳匹配 - Oracle/Java
- 22. 最大匹配字符串
- 23. 查找與pattern1匹配的字符串,但不匹配pattern2
- 24. 從字符串列表計算最接近的字符串匹配
- 25. SQL查找近似匹配
- 26. tsql - 在查找中匹配到最接近的數字
- 27. MySQL - 在數字範圍內查找最接近的匹配
- 28. 比較字符串近似匹配
- 29. 逼近字符串匹配在Ruby中
- 30. LevenshteinSim()近似字符串匹配
字符串之間的相似性/鄰近性的確切定義是什麼?還是有什麼好的,可以給你一些措施? – 2010-11-05 00:03:04
所以對於我上面的示例,字符串列表和我正在查找的字符串都以「d」開頭......但我的搜索字符串的下一個字符是「t」...在該列表中,「t」更靠近到「v」比「z」或「x」,所以我選擇「dvg」搜索「dtg」 – Bohn 2010-11-05 00:08:01