如何在 google / diff-match-patch C# 中实现单词级别



我正在尝试在Google Diff Match Patch中实现单词级匹配,但它正在击败我。

我得到的结果是:

=I've never been =|-a-|=t=|= th=|-e-|=se places=|
=I've never been =|=t=|+o+|= th=|+o+|=se places=|

我想要的结果是:

=I've never been =|-at these-|= places=|
=I've never been =|+to those+|= places=|

文档说:

复制diff_linesToChars并将其称为diff_linesToWords。看 对于标识下一行边界的行:lineEnd = text.indexOf('', lineStart(;

在 c# 版本中,我找到了要更改的行diff_linesToCharsMunge,我将其更改为:

lineEnd = text.Replace(@"/[n.,;:]/ g"," ").IndexOf(" ", lineStart);

但是,粒度没有变化 - 它仍然在字符级别发现差异。

我打电话给:

List<Diff> differences = diffs.diff_main(linepair.Original, linepair.Corrected, true);
diffs.diff_cleanupSemantic(differences); 

我已经逐步完成以确保它正在达到我所做的更改(偶然地,在它启动之前至少有 100 个字符的硬编码(。

我创建了一个带有diffmatch程序的示例dotnet项目。它可能是旧版本的DiffMatchPatch文件,但单词和行有效。

DiffMatchPatchSample

对于您上面的示例文本,我得到下面的输出。

在这些 | 到那些

相关内容

  • 没有找到相关文章

最新更新