Assuming these two strings:
string s1="control";
string s2="conrol"; (or "ocntrol", "onrtol", "lcontro" etc.)
我怎样才能编程地找到s2与s1相似,并用s1替换s2字符串呢?
谢谢。
Jeff
您可以尝试检查两个单词之间的 Levenshtein 距离,如果距离超过了阈值,就替换该单词。
难点在于定义阈值,在您的例子中,一个阈值为2可能适用。
我会使用Matlab来对此进行一些测试。 我会按照以下步骤进行:
CONTROL 1111111
OCNTROL 0011111
ONRCTOL 0000111
因此,我有一个原始单词的所有1,然后在第二种情况下有五个1,在第三种情况下有三个1。您可以说70%是可以接受的,如果匹配70%,那么我将使用这个单词。 OCNTROL将被接受,但ONRCTOL不会。
我之所以说Matlab,是因为您可以轻松地将大量数据加载到向量中并进行向量比较。
Linq方法
:尝试将两个字符串中的字符存储在两个List<chars>
或List<String>
中,并使用SequenceEqual
或Except
比较较小的字符串与较大的字符串。