文本对比

文本

在线文本对比:逐行 diff 与字符级高亮

需要比对两段文本的时刻往往很琐碎:同事发来一份改过的配置,说「就动了一点点」;测试环境和生产环境的返回值不一样,但肉眼看着差不多;一段翻译稿改了几个词,要确认到底改在哪。这些场景都够不上开一个版本库,却又确实需要精确到字符的答案。

这个页面就做这一件事。左边贴原文,右边贴对照,输入停下来约 0.2 秒后自动出结果,也可以手动点「对比」。差异按行并排展示,两侧都带原始行号;删除的行标橙、新增的行标绿,而当一处改动被识别为「同一行的修改」时,还会在行内做字符级比较,只把真正变动的那几个字涂色——这比整行标红有用得多,尤其是在比对长 URL、时间戳或一串参数的时候。

顶部三个选项决定了什么算差异。「忽略行尾空白」默认开着,因为行尾多一个空格几乎从来不是有意义的改动;「忽略大小写」适合比对不区分大小写的配置键;「对比前去掉每行首尾空格」则用于两份内容缩进风格不同、只关心文本本身的场景。「交换左右」在你分不清某处是新增还是删除时特别管用,换个方向看一遍就清楚了。

和常见的在线 diff 网站相比,这里不上传、不登录、不生成分享链接。两段文本从始至终留在浏览器内存和本地缓存里,页面首次加载后断网也能继续对比,处理线上配置或含密钥的响应体时不必担心内容外流。

对比完成后可以点「复制差异摘要」,得到一份只含变动行的纯文本,贴进工单或提交说明里正好。要注意它是给人读的摘要格式,不是能被 patch 应用的标准补丁;同时页面不接受文件上传,Word 和 PDF 需要你自己先复制成纯文本。

功能一览

  • 逐行对比:以行为单位计算差异,左右并排展示,两侧各自标注在原文中的行号
  • 字符级高亮:配成一对的「修改行」会再做字符比较,只给真正变动的片段上色,一眼看出改了哪几个字
  • 差异统计:顶部实时给出相同、新增、删除、修改行对四个数量,便于快速判断改动规模
  • 三个对比选项:忽略行尾空白(默认开启)、忽略大小写、对比前去掉每行首尾空格,可任意组合
  • 交换左右:一键调换原文与对照,用来确认某处到底算新增还是删除
  • 复制差异摘要:把统计与所有变动行导出为纯文本,相同行不导出,可直接贴进工单或提交说明
  • 自动重算:修改文本或切换选项后约 0.2 秒自动重新对比,也可随时手动点「对比」
  • 换行符归一:CRLF 与单独的 CR 统一按 LF 处理,Windows 与 macOS 之间传的文件不会整份被判为不同

常见问题

对比的内容会上传服务器吗?
不会。差异计算使用 diff 库在你的浏览器里完成,页面不会把左右两栏的内容发给任何接口,加载完成后断网也能正常对比。两段文本和三个选项会缓存在浏览器 localStorage 中方便下次继续,点「清空」即删除。因此可以放心对比生产配置、接口响应体或合同条款这类不便外传的内容。
「新增/删除」和「修改」是怎么区分的?
先按行算差异,若一段被删除的行紧跟着一段新增的行,就把它们按顺序两两配对判定为「修改行对」,并在行内做字符级比较;配不成对的部分才算纯新增或纯删除。所以同一处改动被算成一次修改还是一增一删,取决于上下文的对齐结果。两段行数不等时,多出来的那些行会显示为单侧的新增或删除。
只改了缩进为什么也被标成差异?
默认只忽略行尾的空格和制表符,行首缩进被视为内容的一部分。勾选「对比前去掉每行首尾空格」,比较前会把每行两端的空白都去掉,纯缩进调整就不再算差异。注意这个选项会同时影响展示,结果区呈现的是去掉空白后的文本;想看原样排版,取消勾选即可。缩进风格差异很大时,也可以先用站内的「代码格式化」统一。
支持多大的文本,会不会卡住?
没有硬性上限,取决于浏览器可用内存。几千行以内基本是瞬时出结果。行级差异算法的开销随两段内容的差异量增长,如果两份文件几乎完全不同又都有上万行,计算和渲染都会明显变慢。此外「修改行对」还要做字符级比较,压缩成一整行的超长 JS 或 JSON 会额外增加耗时,建议先格式化再对比。
能直接对比两个文件,或者 Word、PDF 吗?
不能。页面没有文件上传入口,也不解析 Word、PDF、Excel 等二进制格式,请把内容复制成纯文本粘贴到左右两栏。代码或配置文件用编辑器打开后全选复制即可。如果你要对比的是版本库里的两个提交,用 git diff 更合适;这个工具的定位是手头两段临时文本的快速比对。
「复制差异摘要」导出的是什么格式?
第一行是统计数字,之后每行一条变动,新增行以加号开头,删除行以减号开头,修改行以波浪号开头并用箭头分隔前后内容,相同的行不会被导出。这个格式适合贴进工单、邮件或提交说明里说明改了什么,但它不是标准的 unified diff,不能用 patch 命令直接应用。复制依赖浏览器剪贴板权限,失败时页面会提示。

文本分组的其它工具

  • 代码格式化在线 HTML / JS / CSS / SQL / JSON 代码格式化
  • JSONJSON 格式化、最小化、校验、字符串转义与 Unicode 处理
  • 文本处理大小写转换、命名风格、排序排重、信息提取
  • MarkdownMarkdown 即时预览与 HTML 复制
  • 正则测试在线正则匹配、分组查看与替换测试