文本对比

在线对比两段文本差异,逐行高亮新增、删除与修改内容。基于最长公共子序列(LCS)的算法在浏览器本地计算,支持代码、配置与文档的快速比对。

0 行
0 行

使用说明

  1. 在左右两个输入框中分别粘贴原始文本与修改后的文本,每行作为一个对比单元。
  2. 点击「对比」即可逐行比对;勾选「实时对比」后,任一侧内容变化都会自动重新对比。
  3. 对比结果中:不变的行以灰色显示,新增行标为绿色,删除行标为红色并带删除线,发生修改(同一位置被替换)的行以黄色标出。
  4. 结果上方的统计条汇总新增、删除、修改的行数,方便快速了解改动规模。
  5. 处理 JSON、代码等文本时,建议去掉行尾空白差异,或先格式化再对比以获得更清晰的结果。

常见问题

对比算法是什么?准确性如何?
本工具自行实现最长公共子序列(LCS)行级算法,能找出两段文本之间保持不变的公共行,再据此区分新增、删除与替换;不依赖任何第三方库,也无需上传内容。
「修改」和「删除 + 新增」有什么区别?
当若干行被替换为数量相同的若干新行时,视为修改并以黄色显示新行;当只有一侧增加或减少行数时,分别按新增或删除处理,保证统计与行号直观可读。
对比结果的行号如何对应原文?
逐行对比不会显示行号,但输出顺序与原文一致:所有未变化行保持相对顺序,删除行出现在其原位置,新增行标记 + 号插入在对应上下文之间,方便对照两侧面板。
内容很长或完全不一样会卡住吗?
算法针对常用规模的文本做了优化;若输入行数过大(两侧各超过数千行),将自动改用逐行对齐的简化模式并给出提示,仍然可以在浏览器本地完成。

使用步骤

  1. 左右两栏粘贴文本

    把原始文本粘到左栏、修改后的粘到右栏,两侧各按行统计行数;对比以行为单位,代码、配置和文档都适用。

  2. 点击对比生成差异

    点对比按钮即按行算出差异:未变化行淡显,新增行绿色,删除行红色加删除线,被替换的行用黄色标出。

  3. 勾选实时对比自动刷新

    勾选后任何一侧内容变化都会自动重新计算,边改边看结果,适合小段文本的快速迭代。

  4. 看统计评估改动量

    结果上方的差异统计汇总新增、删除与修改的行数,扫一眼就能判断这版改动是大是小,便于汇报和自查。

  5. 先统一格式再对比

    比较 JSON 或代码时,先把两侧都格式化成相同缩进,或去掉行尾空格差异,结果会更干净、更聚焦真实改动。

工具详细介绍

这是一款在线文本对比工具,用最长公共子序列算法逐行找出两段文本的相同部分。其余内容归为新增、删除或修改,并用不同颜色高亮。它自己实现了算法、不依赖第三方库,全部计算在浏览器本地完成,粘贴代码或含敏感信息的配置也不会外泄。

典型场景包括:对比两份配置文件找出被改动的参数,检查同事或自己改了代码的哪几行,核对合同或文档两个版本的差异。发布前也可以确认生成文件是否如预期变化。开发、运维、编辑审校和需要逐字核对文本的人都很适用。

原理与背景

逐行对比的数学内核是最长公共子序列(LCS)。做法是把两侧文本看作行序列,用动态规划填一张表格,选出保留行数最多的对齐方式,剩下的行归入新增或删除。表格规模是两侧行数的乘积,一千行对一千行就是一百万个格子,时间与内存都按这个量级增长。GNU diff 与早期 git 采用 Eugene Myers 在 1986 年提出的 O(ND) 算法,目标同样是把编辑距离压到最小。该算法与 LCS 在数学上互为对偶。

最小编辑方案往往不止一种:整段文字下移一行,既可以理解成移动,也可以拆成删除加新增,不同工具的呈现并不一致。归类与预期不同时,先别急着判断谁错了。行级对比另有盲区:行内改一个字符,整行就按删除加新增计,看不出具体动了哪个词。编辑器与 git 的词级 word diff 就是补这个缺口的。重复行很多的文件,比如 import 连排,还可能把对齐带偏;git 的 patience diff 用只出现一次的行做锚点来缓解。

典型使用场景

  1. 比对接口响应快照

    接口升级前后各保存一份响应,格式化成相同缩进后贴入对比,新增或消失的字段一眼锁定。比在两份 JSON 里翻找键名可靠,差异结果也方便截图贴进回归测试报告。

  2. 定位环境配置漂移

    把生产与预发环境导出的配置各贴一侧,先看统计总量再逐行走查,黄色替换段优先处理。参数被整行改写往往比增删影响更大,超时与重试阈值被顺手调过就属此类。

  3. 核对批量生成的文本

    模板批量生成的邮件、SQL 或脚本可能因个别数据差异出现零星行不同,全部贴入后异常行自动浮出。统计行数与预期条数对不上时,也能立刻发现漏生成或重复生成。

使用技巧

  • 差异统计里的修改指等长替换:旧内容被同样行数的新内容覆盖时按修改计,否则分别计入新增和删除。
  • 改动几千行以上时会自动切换到更快的逐行对齐模式,超大文件仍可完成对比,只是精度略有取舍。
  • 对比前先清掉行尾空格或统一换行风格,能把噪音差异降到最低,让真正的改动一眼可见。

注意事项

  • 行内小改整行标红

    行级对比只认整行:只改一个字符也会同时显示为删除与新增两行,视觉上像大改动。需要看清具体变动时,把该行单独复制出来按词对比,或用编辑器的行内差异高亮辅助。

  • 编码不同造成假差异

    两份文件一份 UTF-8 一份 GBK 时,所有中文行都会被判为不同,形成整篇全红的假象。这类差异与内容无关,先统一编码再对比,结果才有意义。

  • 单行大文件的盲区

    压缩成一行的 JSON 或整段无换行文本只有一行,行级对比只能报整行不同,无法定位差异位置。先格式化或手动断行,让内容展开成多行再比,才能落到具体位置。

相关工具