使用C#,我该如何替换相似的单词?

时间:2010-10-12 08:20:06

标签: c# string

假设这两个字符串:

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

如何以编程方式发现s2与s1类似,并用s1字符串替换s2字符串?

感谢。

杰夫

5 个答案:

答案 0 :(得分:12)

您可以尝试检查两个单词之间的Levenshtein distance,如果距离超出阈值,请替换该单词。

困难的部分是定义阈值,在您的示例中,阈值2可以起作用。

Implementation of Levenshtein distance in C#

答案 1 :(得分:3)

你可以使用Levenshtein Distance来评估这两个单词的接近程度。你需要决定你做哪个等级替换。

答案 2 :(得分:1)

我建议一个更简单的答案。比较2个字符串的长度&还要比较两个字符串的ASCII值之和。

答案 3 :(得分:0)

我使用matlab对此进行一些测试。我会做以下

CONTROL 1111111

OCNTROL 0011111

ONRCTOL 0000111

所以我的原始单词都是1,而我在第二种情况下有5个1,在第三种情况下有3个1。你可以说70%是可以接受的,如果70%匹配,我将使用这个词。 OCNTROL将被接受,但ONRCTOL不会。

我说Matlab是因为你可以轻松地将大量数据加载到矢量中并进行矢量比较。

答案 4 :(得分:0)

Linq Method:尝试将字符存储在两个List<chars>List<String>的字符串中,并将samller一个与SequenceEqualExcept进行比较更大的一个。