如何使用google-diff-match-patch C#库?

时间:2011-05-18 22:17:36

标签: c# diff patch match

我正在查看http://code.google.com/p/google-diff-match-patch/并已下载该文件。当我看到它是2个文件

DiffMatchPatch.cs
DiffMatchPatchTest.cs

当我尝试创建DiffMatchPatch.cs的新对象时,我必须传入一些操作和字符串文本。

http://neil.fraser.name/software/diff_match_patch/svn/trunk/demos/demo_diff.html

在演示中,他们划掉了不同的词,这就是我想要实现的目标。

我正在尝试比较服务器端的2个文本块找到差异并向用户发送带有文本文件块的电子邮件,就像最终结果在我上面发布的演示中一样。

那么有没有人有关于如何使用C#版本的教程?

3 个答案:

答案 0 :(得分:26)

供参考,这非常简单:

var dmp = new diff_match_patch();
var diffs = dmp.diff_main(text1, text2);
var html = dmp.diff_prettyHtml(diffs);

答案 1 :(得分:7)

使用当前版本(2.1.0)的实现看起来像这样

var dmp = DiffMatchPatchModule.Default;
var diffs = dmp.DiffMain(text1, text2);
var html = dmp.DiffPrettyHtml(diffs);

答案 2 :(得分:1)

对于因标题而碰到该线程并希望获得有关如何通过NuGet上的https://github.com/pocketberserker/Diff.Match.Patch库使用Google Diff-Match-Patch算法的解释的人,以创建一个diff字符串,因此他可以将更改发送到某个地方(例如,通过websocket),然后根据旧值和diff字符串将其恢复到目标位置,这将像这样:

var oldValue = "Test old text.";
var newValue = "Test new text.";

// create diff string
var dmp = DiffMatchPatch.DiffMatchPatchModule.Default;
var diffs = dmp.DiffMain(oldValue, newValue);
var srcDelta = dmp.DiffToDelta(diffs);
// restore from diff
var dmp = DiffMatchPatch.DiffMatchPatchModule.Default;
var dstDelta = dmp.DiffFromDelta(oldValue, srcDelta);
var restoredNewValue = dmp.DiffText2(dstDelta);