diff_match_patch google 库在 C# 中未按预期工作

diff_match_patch google library is not working as expected in C#

我正在编写文本更改跟踪插件,我的代码是:

   mDiffMatchPatch = new diff_match_patch()
   List<Diff> diffList = mDiffMatchPatch.diff_main(OriginalText, ModifiedText);                        
   mDiffMatchPatch.diff_cleanupSemantic(diffList);

其中 Diff 是一个具有两个属性的对象,'text' 和 'operation'

我的原文是:

当我在 'installer' 之后插入单词 'ice' 时,它应该显示:

但是当我突出显示 'installer' 并在其顶部键入 'ice'(在一次操作中将 'installer' 替换为 'ice')时,它显示不正确。

即取原'installer'的首字母,在'ice'中将'i'和'ce'分开。

我检查并重新检查,我的文字颜色渲染是正确的。 diff_match_match 打破了 'ice' 中的 'i',以便与 'installer' 的 'i' 相匹配。

有什么补救办法吗?如果没有,C# 中是否有用于 diff_match_patch 的替代库?

我按照项目 github 页面上的指导解决了这个问题。即,使用 diff_match_patch 对象的 word-based diff 函数。您可以通过复制 line-based 函数并按文章修改它来创建它。