文本的C#Diff算法

Mol*_*lly 12 c# algorithm diff

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

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

cod*_*ict 5

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

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

从上面的维基页面:

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


cfe*_*uke 5

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

  • 链接已更正。 (2认同)

Joh*_*rth 5

我发现Google已发布用于进行差异,匹配和补丁的代码,其中包含c#类和测试代码。该代码不是很难使用恕我直言。

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

有据可查:

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


spe*_*der 3

通常用最长公共子串算法来实现。这篇文章将会引起人们的兴趣。

  • 它不是最长公共**子串**,而是最长公共**子序列**。子串始终是连续的,但子序列不一定是连续的。为了获得新文本而对旧文本所做的更改不必是连续的字符。 (4认同)