我正在寻找一种差异算法,它将产生类似于Stack Overflow编辑修订页面的结果。我刚开始寻找,虽然我不排斥自己动手做,但我不需要重新发明轮子。我将使用C# 4.0。我基本上有两个字符串,一个旧的和一个新的。我想知道新的有什么变化,并用高亮和删除线标出。
我发现Google发布了一些包含C#类和测试代码的差异、匹配和补丁代码。在我看来,这些代码并不难使用。 https://github.com/google/diff-match-patch 这里有很好的文档: https://github.com/google/diff-match-patch/wiki/API
这是基于最长公共子序列算法,通常被称为LCS。 旧文本和新文本的LCS给出了未改变部分。因此,旧文本中不属于LCS的部分就是被更改的部分。 来自上面的维基页面: 这是一个经典的计算机科学问题,是“diff”(文件比较程序,输出两个文件之间的差异)的基础,并在生物信息学中有应用。