我需要逐字比较两个字符串。 类似于 diff,但用于单词,而不是行。
就像在维基百科中所做的那样 http://en.wikipedia.org/w/index.php?title=Horapollo&action=historysubmit&diff=21895647&oldid=21893459
结果我想返回两个单词索引数组,这两个数组在两个字符串中是不同的。
是否有任何适用于 .NET 的库/框架/standalone_methods 可以做到这一点?
附言我要比较几千字节的文本
最佳答案
实际上,您可能想要实现我们在 DNA 中使用的局部对齐/全局对齐算法的变体 sequence alignments .这是因为您可能无法对两个字符串进行逐字比较。即:
The quick brown fox jumps over the lazy dog
The quick fox jumps over the lazy dog
换句话说,如果您无法识别整个单词的插入和删除,您的比较算法可能会变得非常 sc(r)ewed。看看 Smith-Waterman 算法和 Needleman-Wunsch 算法,找到一种方法使它们适应您的需要。由于如果字符串很长,这样的搜索空间会变得非常大,您还可以查看 BLAST。 BLAST 是一种非常常见的启发式算法,几乎是遗传搜索的标准。
关于c# - .NET 中两个字符串的逐字差异比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1786364/