问题标签 [google-diff-match-patch]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
861 浏览

javascript - 在 Angular 中使用 google-diff-match-patch

我想google diff/match/patch lib在一个角度应用程序中使用 来显示两个文本之间的区别。

我的用法是这样的:

问题是,我如何导入diff_match_patch这条线?
var dmp = new diff_match_patch();

0 投票
0 回答
51 浏览

c# - 我正在使用 DiffMatchPatch-Library,我想知道在我的文件中的哪一行找到了更改

函数调用:

0 投票
1 回答
72 浏览

google-diff-match-patch - 在生成补丁时忽略 Google Diff Match Patch 中的 EOL Unix 和 Windows

我正在尝试比较两个文本文件,一个是 Windows(CR\LF),另一个是 Unix(LF)。尽管文件大小字节不同,但在 Beyond Compare 等比较器工具中打开的两个文件都显示相同。有没有办法让 Google DMP 显示文件相等?

非常感谢任何帮助。谢谢你!

0 投票
0 回答
246 浏览

javascript - 使用 google 的差异匹配补丁库进行 html 字符串比较,方法是将 html 标签替换为 unicode 字符,但不适用于项目符号列表?

我正在使用 google 的 diff-match-patch 库进行 HTML 字符串比较,方法是将 HTML 标记替换为 Unicode 字符。我已按照以下链接进行实施: 是否有任何 javascript 库可用于为 HTML 创建一个漂亮的结构化(树)差异?

这是在没有损坏 HTML 标签的情况下呈现我的不同 HTML。但是,显示的差异是不准确的。主要是与项目符号列表进行比较时。请参阅随附的屏幕截图,该屏幕截图描述了项目符号列表的不准确差异 HTML

我需要帮助应用逻辑来处理项目符号列表。请在此处找到我的实现示例副本。此外,我在库的 diff_prettyHtml 方法中添加了一个正则表达式,以仅将文本包含在 <ins> 和 <del> 标记内

非常感谢解决此问题的任何帮助

先感谢您

0 投票
0 回答
15 浏览

xml - 在 diff-match-patch 中使用 diff 时如何排除日期?

diff_match_patch用来比较 XML 文件并将差异输出到一个 Beyond-Compare 中,例如 HTML 中的并排比较页面。但是,我正在比较的 XML 包含我希望比较忽略的日期。

例如:< creationDateTime >2021-07-05T18:51:26 </ creationDateTime >

这是一个示例,标签和日期格式可能会有所不同。

是否可以使用此插件排除日期和时间戳?

0 投票
0 回答
34 浏览

python - diff match patch python vs diff match patch c++ stl

对于 DMP python 版本和 c++ stl 使用 match_main() 对同一对文件进行比较,我得到了不同的结果,即从此链接使用:https ://github.com/leutloff/diff-match-patch-cpp-stl/tree /aee799a31d08977b166fb19cad794730717e3304 尝试对此进行排序。你能帮忙找出原因吗?

0 投票
1 回答
80 浏览

c# - 谷歌 DiffMatchPatch 到 NodeView

我一直在努力使用 XmlComparsion 功能。我必须比较两个 Xml 的差异,然后以 TreeView 的方式显示它们。

我做了一些研究,发现 Google Diff Match Patch 库看起来正是我的比较部分所需要的。

https://github.com/google/diff-match-patch

我已将其实现如下

现在,我需要一些帮助的最大挑战是将这种差异变成像对象一样的树视图。

我已经完成了一个树视图类,我在其中解析了比较使用的两个 Xml 文件

现在我想做的是确保来自 TreeView 的操作与来自 DIffMatchPatch 的操作结果相匹配,但我的问题是 DiffMatchPatch 将 Xml 比较为字符串并且根本不将 Xml 视为节点树。结果是 2 个简单的 Xml 书籍文件。

它会输出这个

在更“可读”的视图中看起来像这样

在此处输入图像描述

现在您可以看到,如果您有 2 个或更多节点差异,它们作为“孔差异”在内部“放置”在一起,这让我将其解析为类似树视图的对象非常棘手。

在这里您还可以看到 book997 是一本新书,但与 book103 的描述相同,它将考虑从 book 103 的描述开始并在 book997 的描述之前结束的“添加”文本。在某种程度上,我想将两个节点都更改为节点,但我不知道我可以使用什么来匹配特定的 TreeView 节点与差异的一部分或孔。

希望我说清楚了。我开始觉得我开始对 GoogleDiffMatchPatch 的需求非常错误,但在这一点上,我更难创建基于节点的自定义 xml 比较器。

编辑:还添加了从 XML 到 TreeView 的解析

添加了 git 存储库: https ://github.com/SebiCiuca/DiffMatchPatchToNodeView

0 投票
0 回答
14 浏览

java - 如何使用 diff_match_patch 计算两个文件之间的差异,例如 GitHub 的文件差异

我需要找到两个文件之间的逐行差异,并在两个文件的并排视图中显示输出,就像 GitHub 的文件差异部分中显示的那样。我为此目的使用以下库:

我正在使用以下逻辑逐行计算差异并将它们放入数组中,以便可以使用 javascript 在 HTML 中显示。我在这里所做的是,如果在两行之间发现差异,则搜索匹配行直到一个文件末尾的算法。如果有这样的情况,将在另一个文件之间插入一个空行,就像 GitHub 的文件差异中所做的那样,在两个文件之间添加或删除行。下面提到的算法一直工作到一个点,当行数增加时,它的行为很奇怪,循环运行了无数次。

是否有任何其他算法可满足我的要求,或者有什么方法可以解决我的问题?

0 投票
1 回答
17 浏览

c# - diff_match_patch 谷歌库在 C# 中没有按预期工作

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

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

我的原文是:

在此处输入图像描述

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

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

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

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

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

0 投票
1 回答
24 浏览

java - 从差异补丁匹配中检索行号

我正在做一个比较两个大文本文件版本(大约 5000 多行文本)的项目。较新的版本包含潜在的新内容和已删除的内容。它旨在帮助检测文本版本的早期变化,因为团队从该文本中接收信息。
为了解决这个问题,我使用了diff-match-patch库,它允许我识别已删除的内容和新内容。在第一步中,我搜索更改。

然后我通过关键字 INSERT/DELETE 过滤列表以仅获取新/删除的内容。

但是,当我输出内容时,有时我只得到单个字母,例如 (o, contr, ler),而只删除/添加了单个字符。相反,我想输出发生变化的整个句子。有没有办法从发生更改的 DiffMatchPatch 中检索行号?