在线文本对比(两段文字差异高亮)

在线文本对比工具,粘贴两段文字即可逐行找出差异:新增行与删除行分色标注、左右行号对照,还能高亮同一行里被改动的字,并给出新增删除统计与相似度,全部在浏览器本地完成,内容不上传。

左边 0 行 / 右边 0 行(单边上限 2000 行)。
0相同行
0删除行(只在左边)
0新增行(只在右边)
0差异块
相似度
左行号左:修改前右行号右:修改后
全部计算在浏览器本地完成,两段文字都不会上传。

什么情况需要文本对比

改过一版文案、动过一份合同、更新过一段配置,事后想确认「到底改了哪几处」——这类核对靠肉眼做,最容易漏掉的就是一个数字、一个标点或者一个多出来的空格。这个页面就是干这件事的:把改动前的文字放在左边,改动后的放在右边,点一下按钮,两边的差异逐行列给你看:哪几行删掉了、哪几行是新加的、哪一行里只有几个字被改动。

日常用得比较多的场景有几个:编辑改完稿要对照原稿确认改了什么;合同、协议改版后核对条款有没有被动过;运维改完配置文件,想确认只动了自己要改的那几行;学生对照老师批改后的答案;把两版文案的差异整理成清单发给同事。这些内容大多不方便上传到别人的服务器,所以本站的处理全部在你的浏览器里完成。

怎么用

  1. 修改前的文字粘进左边的框,修改后的文字粘进右边的框。两边行数不必一样,多出来的行会被识别成新增或删除。
  2. 根据需要勾选口径开关:忽略大小写忽略行首尾空格忽略空行差异高亮行内改动的字。默认只勾了最后一项。
  3. 开始对比。下面会出现统计、逐行对照表和一份可以直接复制的差异清单。
  4. 想反过来看(把新文当原文),点左右交换;想复制差异清单,点复制结果

差异是怎么算出来的

页面先把两段文字按换行拆成一行一行,再用最长公共子序列(LCS)算法找出两边能按顺序对上的行,剩下对不上的行就是差异:只出现在左边的标成删除,只出现在右边的标成新增。这样做的好处是,即使你在中间插入了几行、又删掉了几行,前面的内容也不会被整段误判成「全部不同」。

行内的红绿高亮用的是同一套算法,只不过比较的单位从「行」换成了「字」。所以「下午 13:30 — 18:00」被改成「下午 14:00 — 18:30」时,页面会把 13 标红、14 标绿,而没动过的部分保持黑色。

几条需要说清楚的规则

常见问题

文本对比是怎么判断「哪一行不一样」的?

页面先把两段文字按换行拆成一行一行,再用最长公共子序列(LCS)找出两边都能按顺序对上的行,剩下对不上的行就是差异:只出现在左边的标成删除,只出现在右边的标成新增。这样即使你插入了三行、又删掉了两行,前面的内容也不会被整段误判成「全部不同」。

左右两边的红字和绿字分别是什么意思?

红底的字是左边有、右边没有的内容,绿底的字是右边新加的内容。整行标红表示这一行在右边被删掉了;同一行里只有几个字标红、另几个字标绿,表示这一行被改动了,页面把改动的字单独挑了出来,其余部分仍是黑的表示没动过。

相似度是怎么算出来的?

相似度 = 2 × 相同行数 ÷(左边行数 + 右边行数)× 100%,四舍五入取整。两边完全一样时是 100%;一边完全清空时是 0%。它只看行,不看字,所以两段内容相同但行数差很多时,这个数字会明显偏低 —— 它衡量的是「改了多大范围」,不是「意思像不像」。

为什么差异位置和我预想的不一样?

最常见的原因有两个。一是行尾多了一个回车,末尾凭空多出一行空行,勾上「忽略空行差异」即可;二是两行内容看起来一样、其实差了一个空格或大小写,勾上「忽略行首尾空格」「忽略大小写」就能对上。剩下的情况属于「改动太大、算法选择了另一条更短的对齐方式」,此时差异块会更大,但结果为真:把标记为相同的行删掉后,左边恰好剩你原文、右边恰好剩你的新文。

最多能对比多少行?

单边最多 2000 行。正好 2000 行是允许的,超过就会直接报错并说明是哪一边超了,不会悄悄截断 —— 截断后的对比结果是错的,比不对比更危险。差异表格最多渲染前 2000 行,但下方「差异清单」里的内容是完整的。

粘贴的内容会被上传吗?

不会。拆分、比对、行内高亮全部在浏览器本地用 JavaScript 完成,页面不发起任何网络请求,也不写入本地存储或日志。合同、内部通知、代码这类不方便外传的内容可以放心用,关掉页面即全部消失。

和其他几个工具配合

对比之前如果两段文字格式很乱,可以先用在线文本去重把重复行清掉,或者用JSON 在线格式化把两份配置都排成一样的缩进 —— 缩进一致了,对比出来的差异才是真正的差异。改完之后想确认篇幅有没有超标,用在线字数统计数一下字数即可。

← 返回全部工具