UltKit

文本对比

左侧粘贴原文,右侧粘贴新版本。删除的行显示为红色,新增的行显示为绿色;在修改过的行内,实际改动的词会被高亮,即使长段落中只改了一个词也能一眼看出。

0 个字符 · 0 个词 · 0 行

0 个字符 · 0 个词 · 0 行

在两个文本框中粘贴文本,即可在此查看差异。

0 个字符 · 0 个词 · 0 行

红色行(−)仅存在于原文,绿色行(+)仅存在于修改后的文本;粗体标出有差异的词。 完全在当前浏览器标签页中运行,您的文本不会被上传或保存。

功能说明

文本对比 使用最长公共子序列算法逐行比较两段文本,用红色标出删除的行,绿色标出新增的行,并在被修改的行内高亮具体变化的词。

处理前
the quick brown fox
→ the quick red fox
处理后
- the quick brown fox
+ the quick red fox

对比原理

该工具会把两段文本都拆分成行,并找出它们的最长公共子序列,也就是在两段文本中都出现且顺序相同的最大行集合。这些行会显示为未更改;原文中其余的行为删除,新文本中其余的行为新增。这与经典的 Unix diff 程序(由 Hunt 和 McIlroy 于 1976 年提出)以及版本控制系统中的变更视图是同一思路。

当一段被删除的行紧接着一段新增的行时,它们通常是同样的行被修改了。工具会把它们配成对,并在每一对内部再做一次按词比较,这样你可以直接看到“星期二”变成了“星期三”,而不必把两行重新读一遍。两个版本的行号都显示在左侧,方便你在自己的文件中找到每处更改。

忽略干扰:大小写与空白字符

两段文本可能存在对你来说无关紧要的差异:某一行用制表符代替空格缩进、编辑器留下的行尾空格,或者标题由大写改成了小写。“忽略空白差异”会把连续的空格和制表符视为一个空格,并忽略行尾空格;“忽略大小写”会在比较各行时不区分字母大小写。高亮后的输出仍然按原样显示新文本。

除此之外,比较是严格精确的:弯引号撇号和直撇号是不同的字符,连字符和en dash(短破折号)也不同。如果某一行被标记出来但看起来完全一样,通常是排版标点或不间断空格造成的。

常见用途

写作者可以对比编辑返回的稿件;律师和采购人员可以核对新版合同中哪些条款发生了变动;开发者可以对比两次运行的配置文件或日志输出;学生可以检查改写之后究竟改了哪些内容。结果可以复制,或以统一 diff 风格的纯文本下载,被删除的行前加减号,新增的行前加加号。如需完成其他文本整理工作,其余的文本工具用法相同,全部在浏览器中完成。

常见问题

对比的文本会上传到服务器吗?
不会。两段文本都只保留在当前浏览器标签页中,比较由 JavaScript 在你的设备上完成,因此可以放心地对比机密草稿和合同。
为什么移动过的段落会显示为删除和新增?
按行比较只会保留相对顺序不变的行。当某一块内容被移动时,算法会保留其中一个位置,并把另一个位置报告为一次删除加一次新增,这与 git diff 的做法一致。
文本最多可以多长?
各有几千行也能立即完成比较。开头和结尾相同的行会在主比较之前被跳过;如果剩下的中间部分特别大,工具会提示你拆分文本,而不是让标签页卡死。
可以直接对比Word或PDF文件吗?
请粘贴其中的文字。从 Word 复制时,段落会保留为行;从 PDF 复制的文字往往带有硬换行,可以先用“删除换行”工具去掉。
下载结果中的减号和加号是什么意思?
以减号开头的行只存在于原文中,以加号开头的行只存在于修改后的文本中,以两个空格开头的行则没有变化。