假设这两个字符串:
string s1="control";
string s2="conrol"; (or "ocntrol", "onrtol", "lcontro" etc.)
如何以编程方式发现s2与s1类似,并用s1字符串替换s2字符串?
感谢。
杰夫
答案 0 :(得分:12)
您可以尝试检查两个单词之间的Levenshtein distance,如果距离超出阈值,请替换该单词。
困难的部分是定义阈值,在您的示例中,阈值2可以起作用。
答案 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一个与SequenceEqual
或Except
进行比较更大的一个。