0

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

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

其中 Diff 是具有两个属性的对象,“文本”和“操作”

我的原文是:

在此处输入图像描述

当我在“安装程序”之后插入“冰”这个词时,它应该出现: 在此处输入图像描述

但是当我突出显示“安装程序”并在其上键入“冰”时(在一次操作中将“安装程序”替换为“冰”),它显示不正确。 在此处输入图像描述

也就是说,它取原始“installer”的第一个字母,并在“ice”中将“i”与“ce”分开。

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

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

4

1 回答 1

0

我按照项目 github 页面上的指导解决了这个问题。即使用 diff_match_patch 对象的基于词的 diff 函数。您可以通过复制基于行的函数并在每篇文章中对其进行修改来创建它。

于 2022-02-11T01:26:00.327 回答