文本对比

免费在线文本对比:粘贴两段文本或打开文件,逐行标出新增、删除和修改的字词,可忽略大小写与空白、只看差异。免注册,数据不上传。

  • 逐行对比
  • 标出修改字词
  • 忽略空白大小写
  • 只看差异

对比结果

文本只在你的浏览器中对比,不会上传也不会保存。

🔒 所有计算都在你的浏览器内完成,数据不会上传到任何服务器。

什么时候会用到

  • 合同与文档修订:比较两版合同或策划案,找出对方改了哪些字。
  • 代码与配置文件:没有 Git 时,快速对比两段代码或配置的差异。
  • 论文与作业:确认修改前后的区别,或检查两份文本有多少相同。
  • 翻译与文案校对:比较改稿前后的版本,勾选“只显示差异”快速确认。

使用说明

  1. 把原始文本粘贴在左边、修改后的文本粘贴在右边,或点“打开左侧文件/打开右侧文件”导入文本文件,下方会实时显示对比结果。
  2. 结果中红底“−”是只在左边的行(删除),绿底“+”是只在右边的行(新增);修改过的行会成对出现,并用更深的底色标出改动的字词。
  3. 按需勾选“忽略大小写”“忽略空白差异”排除不重要的差异;内容很长时勾选“只显示差异”,相同的部分会折叠起来。

实际示例

用默认示例对比两版 SQL:左边 5 行、右边 6 行,结果是 +3 行、−2 行(相同 3 行)。第 1 行从 COUNT(*) AS Cnt 改成 SUM(Amount) AS Total,行内只标出 COUNT→SUM、*→Amount、Cnt→Total,括号和 AS 不标;右边第 4 行 AND Status = 1 是纯新增;最后一行注释只标出“一”改成“二”。

左边三行 if (x == 1) {、 return TRUE;、},右边三行 if (x == 1) {、 return true;、}:不勾选任何选项时是 +2 行、−2 行,连多出来的空格都会标出;勾选“忽略空白差异”后只剩第 2 行不同(+1、−1),行内只标出 TRUE→true;再勾选“忽略大小写”,三行全部相同。

结果怎么看

  • 状态栏的“+N 行、−N 行”分别是新增和删除的行数。修改一行会同时算作删除 1 行和新增 1 行,所以改了 3 行会显示 +3、−3。
  • 每行前两列是行号:第一列是左边(原始)的行号,第二列是右边(修改后)的行号;只有一边有行号表示该行只存在于那一边。
  • 勾选“只显示差异”时,每处变动前后各保留 2 行相同内容作为上下文,其余折叠为“省略 N 行相同内容”。
  • 勾选忽略选项后,被视为相同的行显示的是右边的原文,例如忽略大小写时显示修改后的写法。

原理与计算方法

  • 逐行对比使用 jsdiff 的差异算法(Myers 的 O(ND) 算法),找出把左边变成右边所需的最少新增和删除,与 git diff 的思路相同。
  • 对比前可先将每一行规范化:忽略空白差异会把连续空白合并成一个并去掉行首行尾空白,忽略大小写会转成小写。规范化只用于匹配,界面始终显示原文。
  • 相邻的删除和新增视为一个修改块,按顺序两两配对后再做行内对比:中文和日文逐字比较,英文和代码以单词为单位,避免单词被拆成零散字母。
  • 行内相同字符少于较长那行的 30% 时不标行内差异。换行符 CRLF、CR 都视为 LF,文件末尾的一个换行不算差异。
  • 打开文件时先按 UTF-8 解码,如果不是合法的 UTF-8 就改用 Big5。

适用限制

  • 只对比纯文本内容,字体、颜色、表格等格式不参与对比。
  • 以“行”为单位对比:同一段文字只是换行位置不同,也会整段显示为修改。
  • 不检测移动:把一段内容移到别处,会显示为一处删除加另一处新增。
  • 差异极多的超大文件对比超过 5 秒会停止并显示错误,请分段对比。
  • 文件编码只自动识别 UTF-8 和 Big5,GBK 等编码的文件请先另存为 UTF-8。

常见问题

为什么有些修改过的行没有标出改动的字?

成对的两行如果相同部分不到较长那行的 30%,说明整行基本重写了,逐字标记只会满屏都是颜色,所以只用整行的红绿底表示删除和新增。

“忽略空白差异”会忽略哪些内容?

连续的空格或 Tab 视为一个空格,行首和行尾的空白也不计,所以缩进变化、多打的空格不会算作差异。空行仍然算一行。

可以对比 Word、PDF 或 Excel 文件吗?

只能直接打开纯文本文件(如 .txt、.csv、.sql、.json、代码文件)。Word、PDF、Excel 请先复制内容再粘贴,格式和样式不参与对比。

我粘贴的内容会被上传吗?

不会。对比完全在你的浏览器里进行,文本不会发送到服务器,也不会保存在浏览器中,关闭页面就消失。

可以用来查重吗?

可以看出两段文字哪些部分完全相同,但只能比较你手上的两份文本;它不会检索网络上的其他文章,也不是正式的论文查重系统。

为什么整段都被标成修改?

常见原因是换行方式不同,例如一边每句换行、一边整段只有一行。可以先把两边整理成相同的换行方式,或勾选“忽略空白差异”再对比。

文本很长也能对比吗?

一般文档都能在几秒内完成;差异非常多、超过时间上限时会提示,请缩小范围或分段对比。

参考来源