文本对比
在线对比两段文本差异,逐行高亮新增、删除与修改内容。基于最长公共子序列(LCS)的算法在浏览器本地计算,支持代码、配置与文档的快速比对。
使用说明
- 在左右两个输入框中分别粘贴原始文本与修改后的文本,每行作为一个对比单元。
- 点击「对比」即可逐行比对;勾选「实时对比」后,任一侧内容变化都会自动重新对比。
- 对比结果中:不变的行以灰色显示,新增行标为绿色,删除行标为红色并带删除线,发生修改(同一位置被替换)的行以黄色标出。
- 结果上方的统计条汇总新增、删除、修改的行数,方便快速了解改动规模。
- 处理 JSON、代码等文本时,建议去掉行尾空白差异,或先格式化再对比以获得更清晰的结果。
常见问题
对比算法是什么?准确性如何?
「修改」和「删除 + 新增」有什么区别?
对比结果的行号如何对应原文?
内容很长或完全不一样会卡住吗?
使用步骤
- 左右两栏粘贴文本
把原始文本粘到左栏、修改后的粘到右栏,两侧各按行统计行数;对比以行为单位,代码、配置和文档都适用。
- 点击对比生成差异
点对比按钮即按行算出差异:未变化行淡显,新增行绿色,删除行红色加删除线,被替换的行用黄色标出。
- 勾选实时对比自动刷新
勾选后任何一侧内容变化都会自动重新计算,边改边看结果,适合小段文本的快速迭代。
- 看统计评估改动量
结果上方的差异统计汇总新增、删除与修改的行数,扫一眼就能判断这版改动是大是小,便于汇报和自查。
- 先统一格式再对比
比较 JSON 或代码时,先把两侧都格式化成相同缩进,或去掉行尾空格差异,结果会更干净、更聚焦真实改动。
工具详细介绍
这是一款在线文本对比工具,用最长公共子序列算法逐行找出两段文本的相同部分。其余内容归为新增、删除或修改,并用不同颜色高亮。它自己实现了算法、不依赖第三方库,全部计算在浏览器本地完成,粘贴代码或含敏感信息的配置也不会外泄。
典型场景包括:对比两份配置文件找出被改动的参数,检查同事或自己改了代码的哪几行,核对合同或文档两个版本的差异。发布前也可以确认生成文件是否如预期变化。开发、运维、编辑审校和需要逐字核对文本的人都很适用。
原理与背景
逐行对比的数学内核是最长公共子序列(LCS)。做法是把两侧文本看作行序列,用动态规划填一张表格,选出保留行数最多的对齐方式,剩下的行归入新增或删除。表格规模是两侧行数的乘积,一千行对一千行就是一百万个格子,时间与内存都按这个量级增长。GNU diff 与早期 git 采用 Eugene Myers 在 1986 年提出的 O(ND) 算法,目标同样是把编辑距离压到最小。该算法与 LCS 在数学上互为对偶。
最小编辑方案往往不止一种:整段文字下移一行,既可以理解成移动,也可以拆成删除加新增,不同工具的呈现并不一致。归类与预期不同时,先别急着判断谁错了。行级对比另有盲区:行内改一个字符,整行就按删除加新增计,看不出具体动了哪个词。编辑器与 git 的词级 word diff 就是补这个缺口的。重复行很多的文件,比如 import 连排,还可能把对齐带偏;git 的 patience diff 用只出现一次的行做锚点来缓解。
典型使用场景
- 比对接口响应快照
接口升级前后各保存一份响应,格式化成相同缩进后贴入对比,新增或消失的字段一眼锁定。比在两份 JSON 里翻找键名可靠,差异结果也方便截图贴进回归测试报告。
- 定位环境配置漂移
把生产与预发环境导出的配置各贴一侧,先看统计总量再逐行走查,黄色替换段优先处理。参数被整行改写往往比增删影响更大,超时与重试阈值被顺手调过就属此类。
- 核对批量生成的文本
模板批量生成的邮件、SQL 或脚本可能因个别数据差异出现零星行不同,全部贴入后异常行自动浮出。统计行数与预期条数对不上时,也能立刻发现漏生成或重复生成。
使用技巧
- 差异统计里的修改指等长替换:旧内容被同样行数的新内容覆盖时按修改计,否则分别计入新增和删除。
- 改动几千行以上时会自动切换到更快的逐行对齐模式,超大文件仍可完成对比,只是精度略有取舍。
- 对比前先清掉行尾空格或统一换行风格,能把噪音差异降到最低,让真正的改动一眼可见。
注意事项
- 行内小改整行标红
行级对比只认整行:只改一个字符也会同时显示为删除与新增两行,视觉上像大改动。需要看清具体变动时,把该行单独复制出来按词对比,或用编辑器的行内差异高亮辅助。
- 编码不同造成假差异
两份文件一份 UTF-8 一份 GBK 时,所有中文行都会被判为不同,形成整篇全红的假象。这类差异与内容无关,先统一编码再对比,结果才有意义。
- 单行大文件的盲区
压缩成一行的 JSON 或整段无换行文本只有一行,行级对比只能报整行不同,无法定位差异位置。先格式化或手动断行,让内容展开成多行再比,才能落到具体位置。