我正在查看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#版本的教程?
答案 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);