跳到主要内容
LeedyBox
支持我们

文本 / 代码比较

逐行比较两段代码或文本,并高亮显示新增和删除的行。

差异

使用前请检查结果。 本工具按“原样”提供,不附带任何保证,结果可能不完整或有误。 服务条款

按行比较。空白差异也算作更改,Windows 和 Unix 换行符视为相同。行内的更改不会单独高亮。

使用方法

  1. 将较早的版本粘贴到“原始文本”中,将较新的版本粘贴到“修改后的文本”中。两个输入框中预先填有一段简短的 JSON 示例,可直接替换。
  2. “差异”下方的结果会随着输入或粘贴而更新,无需点击比较按钮。
  3. 从上到下阅读结果:红色背景、标有 - 的行是从原始文本中删除的行,绿色背景、标有 + 的行是在修改后的文本中新增的行,没有标记的灰色文字行在两段文本中相同。
  4. 查看与“差异”位于同一行的计数:它们表示新增和删除的行数,被编辑过的行会同时计为一次删除和一次新增。如果所有行都一致,该处会改为显示“两段文本完全相同。”

常见问题

我比较的文本会被上传或保存吗?

不会。比较通过 JavaScript 在您的浏览器中进行,您粘贴的文本不会发送到 LeedyBox,本工具也不会保存这些文本。

为什么两行看起来一样,却显示为一行删除、一行新增?

各行是逐字符精确比较的,因此行尾多一个空格、用制表符代替空格、用不间断空格代替普通空格,或者有一个看不见的零宽字符,都足以使两行不同。许多带重音的字母还可以用两种 Unicode 形式存储:一个字符,或一个字母后接一个组合重音符号;两者看起来相同,但并不匹配。大写字母和小写字母也被视为不同。Windows 和 Unix 的换行符被视为相同,因此不是原因所在。

为什么末尾会出现一个被新增或删除的空行?

通常是因为一段文本以换行结尾,而另一段没有。文本会在每个换行处拆分,因此末尾的换行会多出一个空的最后一行。让两段文本的结尾方式保持一致,多出的这一行就会消失。

编辑过的行和移动过的行如何显示?

本工具会找出在两段文本中以相同顺序出现的尽可能多的行,并将其余各行标记为删除或新增。因此,编辑过的行会显示为一行删除加一行新增,通常删除的行在前;连续编辑多行时,删除的行通常会作为一组排在前面。工具不会专门识别移动:移动会显示为在一处删除、在另一处新增的行。当一大段文本越过少数几行移动时,被标记为删除和新增的可能是那几行,而这段文本本身不会被标记。

可以把结果用作 git apply 或 patch 命令的补丁吗?

不可以。结果会显示所有行,新增的行前面带 +,删除的行前面带 -,未更改的行前面有两个空格。与统一格式差异(unified diff)不同,它没有带行号的 @@ 块头,也没有带文件名的 --- 和 +++ 行,因此 git apply 和 patch 命令无法读取。请用它来检查更改,补丁文件请用 git diff 或 diff -u 生成。

最多可以比较多少文本?

两段文本开头和结尾彼此一致的行不计入限制,并且仍会显示在结果中。如果原始文本剩余的行数乘以修改后文本剩余的行数超过 4,000,000(例如 2,500 行对 2,000 行),工具会显示一条提示而不是结果。这时请将文本分成较小的部分进行比较。即使未超过限制,较长的文本也可能让页面在输入时反应变慢,因为每次更改后都会重新比较。

为什么重新格式化的 JSON 或代码会显示这么多更改?

本工具比较的是文本而不是含义,因此新的缩进、键的顺序调整或一行拆成两行都算作更改。比较前请用相同的方式(相同的缩进和键顺序)格式化两个版本,这样剩下的差异就主要是内容上的更改。