c# - .NET 中两个字符串的逐字差异比较

标签 c# .net string string-comparison word-diff

我需要逐字比较两个字符串。 类似于 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/

相关文章:

c# - 将 JSON 文件夹结构反序列化为 C# 对象

c++ - C++ 中的列表<字符串>

python - 如何确定字符串的内容类型

c# - 在打开时更新现有的 excel 文件

c# - 有什么办法可以避免使用三元运算符吗?

c# - MessageBox.Show() 的问题

c# - 简单查询 : Does SortedSet<T> have an easy way of finding the median element?

c# - 将 `string[] args` 提供给 Linqpad 脚本

c# - 既不使用 + 也不使用 StringBuilder 从变量构建字符串

c# - 连接的 Lambda 表达式