簡體   English   中英

使用C#,我該如何替換相似的單詞?

[英]Using C#, how can I replace similar words?

假設這兩個字符串:

string s1="control";
string s2="conrol"; (or "ocntrol", "onrtol", "lcontro" etc.)

我怎樣才能以編程方式找到s2與s1相似並用s1字符串替換s2字符串?

謝謝。

傑夫

您可以嘗試檢查兩個單詞之間的Levenshtein距離 ,如果距離超出閾值,則替換該單詞。

困難的部分是定義閾值,在您的示例中,閾值2可以起作用。

在C#中實施Levenshtein距離

您可以使用Levenshtein Distance ,它可以給出兩個單詞有多接近的等級。 你需要決定你做哪個等級替換。

我會建議一個更簡單的答案。 比較2個字符串的長度,並比較兩個字符串的ASCII值之和。

我會用matlab對此進行一些測試。 我會做以下

CONTROL 1111111

OCNTROL 0011111

ONRCTOL 0000111

所以我的原始單詞都是1,而我在第二種情況下有5個1,在第三種情況下有3個1。 你可以說70%是可以接受的,如果70%匹配,我將使用這個詞。 OCNTROL將被接受,但ONRCTOL不會。

我說Matlab是因為你可以輕松地將大量數據加載到矢量中並進行矢量比較。

Linq Method :嘗試將字符存儲在兩個List<chars>List<String> ,並將samller與較大的List<String>進行比較( SequenceEqualExcept )。

暫無
暫無

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

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