utilduck
Home · 开发者 · 文本差异对比工具

文本差异对比工具

在下方粘贴两个版本的文本,即可看到高亮显示的新增和删除行。

新增0
删除0

关于此diff工具

本工具使用最长公共子序列(LCS)算法逐行比较两段文本——这与版本控制diff工具的核心原理相同——找出把文本A变为文本B所需的最小新增和删除行集合。

仅出现在文本B中的行标记为新增,仅出现在文本A中的行标记为删除,两者完全一致的行不做标记。本工具比较的是整行,而非行内的单个字符。

逐行文本对比是怎么工作的?

本工具把两段文本都拆成一行一行,再找出两者共有的"最长公共子序列"(LCS)——也就是在两段文本里都按相同顺序出现的最长行序列。文本 A 里不属于这个公共序列的行标记为删除,文本 B 里不属于这个公共序列的行标记为新增。举例:哪怕只改了一句话里的一个词,整行也会显示成一行删除加一行新增。

对比两段文本的步骤

  1. 把原始文本粘贴或输入到文本 A 框里。
  2. 把修改后的文本粘贴或输入到文本 B 框里。
  3. 对比结果会随着输入自动更新,两段文本都会被拆成行。
  4. 只出现在文本 B 里的行会高亮标记为新增;只出现在文本 A 里的行会高亮标记为删除。
  5. 如果两段文本粘反了,用交换按钮就能把哪一段当作"原始文本"对调过来。

LCS 对比算法怎么判断改动内容

公共行 = 最长公共子序列(文本 A 的行, 文本 B 的行) · 删除 = A 中不在公共序列里的行 · 新增 = B 中不在公共序列里的行
  • 最长公共子序列(LCS) = 在两段文本里都按相同相对顺序出现的最长行序列(不要求连续)
  • 逐行对比 = 以整行为单位比较;一行很长的文本里哪怕只改了一个字符,整行依然会被标记为改动

逐行对比示例

文本 A 的行文本 B 的行结果
敏捷的棕色狐狸敏捷的棕色狐狸未变化
跳过了懒惰的狗。跳过了瞌睡的狗。删除 1 行 + 新增 1 行
(不存在)这里插入了一行新内容。新增 1 行
这一行被删除了。(不存在)删除 1 行

常见问题

为什么只改了一个词,整行都会被标记为改动?

本工具是按行比较,不是按字符比较。只要两行之间哪怕有一个字符不同,就会被当成两行完全不同的内容:旧版本标记为删除,新版本标记为新增,而不是只高亮那个改动的词。

为什么顺序调换的行会同时显示为新增和删除?

如果一行相对周围的行换了位置,它在新位置上可能就落在最长公共子序列之外。这样一来,即使文字内容本身没变,它也可能在旧位置显示为删除、在新位置显示为新增。

这个工具会忽略空格或大小写的差异吗?

不会。行与行之间按完全一致来比较,所以哪怕只是行首行尾多了空格,或者字母大小写不同,两行看起来一样也会被当作不同的行处理。

我的文本会为了对比被上传到什么地方吗?

不会。两个文本框的对比全部由浏览器里运行的 JavaScript 完成,不会有任何内容发送到服务器。

能用这个工具对比合同或法律文件的两个版本吗?

可以,这是很常见的用法,能快速找出合同、用户协议、规章制度等文件两个版本之间新增、删除或改写的段落。由于对比是按行而不是按句子进行的,建议粘贴时每句话或每个条款单独换一行,这样能更精确地定位改动位置。

本工具只做逐行对比,不会高亮显示某一改动行内具体是哪些字符或词发生了变化;文本量非常大(几千行)时,受算法复杂度影响,对比速度可能会变慢。

隐私与安全

  • 在浏览器中计算 — 您输入的内容仅在本机设备上计算,不会发送到 utilduck 服务器。
  • 加密连接 — 所有页面均通过 HTTPS 提供,传输过程中无法被读取。
  • 不提供给第三方 — 您输入的内容不会传递给分析或广告服务。
  • 不保存 — 计算结果不会保存到任何服务器,也无需注册账号。

最后更新: 2026-08-24

比较文本前先统一比较条件

换行符、连续空格、制表符和末尾空白都可能形成差异,即使画面看起来几乎相同。比较前先决定这些格式差异是否重要;代码、配置和合同通常需要保留,而普通文案校对有时可以先规范化空白。

差异结果只能指出文本哪里不同,不能判断哪一版正确。合并修改时应回到原始需求、版本记录或权威文档逐项确认,并保存未修改的两份原文,避免在比较过程中覆盖证据。

逐行差异适合定位文本块的增加、删除和替换,但它不会理解一句话的法律含义、代码行为或修改动机。若一行很长,只改一个标点也可能整行显示为变更;若一段被移动,算法可能把原位置标为删除、在新位置标为新增,而不是识别“移动”。比较前应复制两份确定的版本,写明左右各自来源与时间,并决定是否保留空白、换行和大小写差异。代码、配置、CSV和合同通常不能随意规范化格式,因为看似多余的字符可能影响执行或解释。

审阅结果时,先按变更块回到左右原文核对上下文,再把确认后的修改应用到第三份工作副本,避免直接覆盖唯一来源。大量自动格式化会淹没实质变更,可先在版本控制或编辑器中单独处理格式,再比较内容;但不要为了让差异更少而删除有意义的结构。页面给出的标记不是自动合并决定,也不判断哪边更新、更可信或无恶意内容。涉及秘密、个人资料或未公开合同,应遵守组织的数据处理规则;正式发布前还应运行目标文件自己的语法检查、测试或法律复核。若两份文档来自PDF识别或网页复制,还要先识别断行、连字符和不可见字符是否由提取过程产生;这些噪声应与作者真实修改分开记录。多人审阅可给每个差异块标注接受、拒绝或待确认及理由,再生成最终版本并重新比较,确认没有遗漏或意外引入第三种文字。最后从最终文档再反向比较一次,确认版本标识正确。