关于此diff工具
本工具使用最长公共子序列(LCS)算法逐行比较两段文本——这与版本控制diff工具的核心原理相同——找出把文本A变为文本B所需的最小新增和删除行集合。
仅出现在文本B中的行标记为新增,仅出现在文本A中的行标记为删除,两者完全一致的行不做标记。本工具比较的是整行,而非行内的单个字符。
在下方粘贴两个版本的文本,即可看到高亮显示的新增和删除行。
本工具使用最长公共子序列(LCS)算法逐行比较两段文本——这与版本控制diff工具的核心原理相同——找出把文本A变为文本B所需的最小新增和删除行集合。
仅出现在文本B中的行标记为新增,仅出现在文本A中的行标记为删除,两者完全一致的行不做标记。本工具比较的是整行,而非行内的单个字符。
本工具把两段文本都拆成一行一行,再找出两者共有的"最长公共子序列"(LCS)——也就是在两段文本里都按相同顺序出现的最长行序列。文本 A 里不属于这个公共序列的行标记为删除,文本 B 里不属于这个公共序列的行标记为新增。举例:哪怕只改了一句话里的一个词,整行也会显示成一行删除加一行新增。
| 文本 A 的行 | 文本 B 的行 | 结果 |
|---|---|---|
| 敏捷的棕色狐狸 | 敏捷的棕色狐狸 | 未变化 |
| 跳过了懒惰的狗。 | 跳过了瞌睡的狗。 | 删除 1 行 + 新增 1 行 |
| (不存在) | 这里插入了一行新内容。 | 新增 1 行 |
| 这一行被删除了。 | (不存在) | 删除 1 行 |
本工具是按行比较,不是按字符比较。只要两行之间哪怕有一个字符不同,就会被当成两行完全不同的内容:旧版本标记为删除,新版本标记为新增,而不是只高亮那个改动的词。
如果一行相对周围的行换了位置,它在新位置上可能就落在最长公共子序列之外。这样一来,即使文字内容本身没变,它也可能在旧位置显示为删除、在新位置显示为新增。
不会。行与行之间按完全一致来比较,所以哪怕只是行首行尾多了空格,或者字母大小写不同,两行看起来一样也会被当作不同的行处理。
不会。两个文本框的对比全部由浏览器里运行的 JavaScript 完成,不会有任何内容发送到服务器。
可以,这是很常见的用法,能快速找出合同、用户协议、规章制度等文件两个版本之间新增、删除或改写的段落。由于对比是按行而不是按句子进行的,建议粘贴时每句话或每个条款单独换一行,这样能更精确地定位改动位置。
本工具只做逐行对比,不会高亮显示某一改动行内具体是哪些字符或词发生了变化;文本量非常大(几千行)时,受算法复杂度影响,对比速度可能会变慢。
最后更新: 2026-08-24
换行符、连续空格、制表符和末尾空白都可能形成差异,即使画面看起来几乎相同。比较前先决定这些格式差异是否重要;代码、配置和合同通常需要保留,而普通文案校对有时可以先规范化空白。
差异结果只能指出文本哪里不同,不能判断哪一版正确。合并修改时应回到原始需求、版本记录或权威文档逐项确认,并保存未修改的两份原文,避免在比较过程中覆盖证据。
逐行差异适合定位文本块的增加、删除和替换,但它不会理解一句话的法律含义、代码行为或修改动机。若一行很长,只改一个标点也可能整行显示为变更;若一段被移动,算法可能把原位置标为删除、在新位置标为新增,而不是识别“移动”。比较前应复制两份确定的版本,写明左右各自来源与时间,并决定是否保留空白、换行和大小写差异。代码、配置、CSV和合同通常不能随意规范化格式,因为看似多余的字符可能影响执行或解释。
审阅结果时,先按变更块回到左右原文核对上下文,再把确认后的修改应用到第三份工作副本,避免直接覆盖唯一来源。大量自动格式化会淹没实质变更,可先在版本控制或编辑器中单独处理格式,再比较内容;但不要为了让差异更少而删除有意义的结构。页面给出的标记不是自动合并决定,也不判断哪边更新、更可信或无恶意内容。涉及秘密、个人资料或未公开合同,应遵守组织的数据处理规则;正式发布前还应运行目标文件自己的语法检查、测试或法律复核。若两份文档来自PDF识别或网页复制,还要先识别断行、连字符和不可见字符是否由提取过程产生;这些噪声应与作者真实修改分开记录。多人审阅可给每个差异块标注接受、拒绝或待确认及理由,再生成最终版本并重新比较,确认没有遗漏或意外引入第三种文字。最后从最终文档再反向比较一次,确认版本标识正确。