文本的C#Diff算法

时间:2010-09-21 20:14:57

标签: c# algorithm diff

我正在寻找一种差异算法,它会产生像SO的编辑修订页面那样的结果。我或多或少刚刚开始寻找,我不反对自己做,但我不需要重新发明轮子。

我将使用C#4.0。我基本上有两个字符串,旧字符串和新字符串。我想通过突出显示和突破来了解新的内容发生了什么变化。

4 个答案:

答案 0 :(得分:5)

它基于Longest common subsequence算法,俗称LCS

旧文本和新文本的LCS给出了保持不变的部分。因此,不属于LCS的旧文本部分是变更的部分。

来自上面的维基页面:

  

这是一个典型的计算机科学问题,是 diff (一个输出两个文件之间差异的文件比较程序)的基础,并且在生物信息学中有应用。

答案 1 :(得分:4)

您可以查看Menees Diff以获取用C#编写的示例。

答案 2 :(得分:4)

我发现Google已经发布了包含c#类和测试代码的diff,match和patch代码。代码并不太难使用恕我直言。

https://code.google.com/archive/p/google-diff-match-patch/

这里有很好的记录:

https://code.google.com/archive/p/google-diff-match-patch/wikis/API.wiki

答案 3 :(得分:3)

通常使用longest common substring算法实现。 This post会引起人们的兴趣。