文本对比工具
逐行比较两段文本,精确查看哪些内容被添加、删除或保持不变。
在两个文本框中粘贴内容,即可查看逐行对比结果。
工作原理
该对比功能是基于最长公共子序列(LCS)算法实现的逐行差异比较,与 git diff 背后的逻辑属于同一类。两段文本先被拆分成行,然后通过一张动态规划表计算出两个版本按顺序共有的最大行集合。反向遍历这张表就能得出你看到的操作结果:只存在于左侧文本的行被标记为红色删除,只存在于右侧的行被标记为绿色添加,共有的行保持中性显示,并各自附带原始行号。
采用逐行对比是一个刻意的权衡。逐字符对比可以显示某一行中某个词发生了变化,但在真实文档中,这种方式往往会退化成满屏碎片:数百个细小片段,比直接看到旧行被删除、新行被添加更难阅读。逐行输出保持易读性,也直接对应代码审查和版本控制展示更改的方式。两个复选框可以调整"相等"的定义:忽略空格会在比较前折叠连续空格并去除行末空白(非常适合重新格式化过的代码),忽略大小写会将两侧统一转为小写。无论如何设置,显示的行都会保留其原始格式。
由于动态规划表所需的内存和时间与(A 的行数)x(B 的行数)成正比,该工具将每侧输入限制在 4000 行以内;超过这个限制,仅这张表就会有数千万个单元格,标签页会卡顿。在限制范围内,一切都在你的浏览器中同步运行:两段文本只存在于你的标签页中,输入时不会发出任何请求(可在开发者工具的 Network 面板中查看),机密草稿或配置内容永远不会接触服务器。