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 函数并按文章修改它来创建它。
我正在编写文本更改跟踪插件,我的代码是:
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 函数并按文章修改它来创建它。