ZeroTool Workbench
文本对比
逐行比较两段文本,高亮显示新增和删除内容。免费在线 Diff 工具,基于 LCS 算法。
使用方法
- 将原始文本粘贴到 Original 面板。
- 将修改后的文本粘贴到 Modified 面板。
- 点击 Compare 查看差异。
- 红色高亮的行表示被删除;绿色高亮的行表示被新增。
- 使用 Swap 可交换比较方向。
关于此工具
此文本对比工具使用最长公共子序列(LCS)算法进行逐行比较。git diff 和
GNU diff 默认用 Myers 算法求同一类最小差异,内存占用小得多,但存在多个同样短的差异时,- 与 + 行的顺序可能不同。非常适合比较代码、配置文件、日志输出或任何需要行级差异的文本。
如何阅读对比结果
「合并视图」把两段文本的所有行排成一列。前两列数字分别是该行在原始文本和修改后文本中的行号。- 表示这一行只在原始文本中出现,+ 表示只在修改后文本中出现,没有标记的行两边相同。例如把
timeout = 30
retries = 3
与
timeout = 60
retries = 3
对比,结果依次是 - timeout = 30、+ timeout = 60 和未改动的 retries = 3。「双栏视图」把每段连续改动里的删除行与新增行按顺序配对:第 1 条删除对第 1 条新增,第 2 条对第 2 条,多出来的一侧留空。CR LF(Windows)、LF 和单独的 CR 都算换行,所以同一段文字换了换行符也判为相同;浏览器文本框本身也会把粘贴的 CR LF 转成 LF(HTML 标准的「换行规范化」)。行尾空格、Tab 与空格、不换行空格(U+00A0)等看不见的差别仍会算作改动。
限制
- 只按整行比较。 改动一个字符,整行也会标成删除加新增,没有按词或按字符的高亮。
- 没有忽略选项。 空白和大小写的差异都算作改动。
- 不折叠上下文。 未改动的行全部显示,输出也没有
@@区块头,不能当作补丁文件使用。 - 大文本会变慢。 算法要为原始文本的每一行和修改后文本的每一行建一张表。在 Node.js 中测试,两个各 10,000 行的文件耗时约 1.3 秒、占用约 840 MB 内存,更大的输入可能让页面卡住。
大文件、补丁或需要忽略空白的对比,请用命令行:diff -u a.txt b.txt 输出 unified 补丁,diff -w 忽略空白,git diff --no-index a.txt b.txt 可对比仓库外的文件,git diff --word-diff 按词高亮改动。
FAQ
我的文本会发送到服务器吗?
不会。所有差异计算完全在浏览器中进行,文本不会离开您的设备。
使用什么差异算法?
此工具用行级最长公共子序列(LCS)求出保留行最多的差异。git diff 与 GNU diff 默认用 Myers 算法求同一类最小差异,内存占用小得多;存在多个同样短的差异时,两者给出的 - 与 + 行顺序可能不同。
可以比较代码文件吗?
可以。粘贴任何纯文本——源代码、配置文件、文章——此工具都会显示新增和删除的行。
仅空白字符不同的行会显示吗?
会。默认显示所有差异,包括仅空白字符不同的行。