博客
简体中文

文本对比 — 在线比较两段文字差异

高亮显示两段文本之间改动的文本差异对比工具

在浏览器中处理 · 不上传任何内容

在两个框中都输入文本,差异会立即显示。

功能简介

这个文本对比工具把两段文本放在一起,准确显示改了哪里。粘贴文章、合同草稿、配置文件或代码片段的旧版和新版即可。新增的内容以绿色加下划线标出,删除的内容以红色加删除线标出,结果上方还会显示新增和删除的数量。

使用方法

  1. 在左侧框粘贴原文,在右侧框粘贴修改后的版本,结果会随输入显示。
  2. 选择比较单位:按行、按词或按字符。
  3. 在左右对照和合并显示之间切换。按行模式下,左右对照会把被替换的行排在同一行。
  4. 不在意空白或大小写差异时,开启“忽略空白”或“忽略大小写”。
  5. 用交换按钮互换两个框的内容。

工作原理

  • 比较使用开源库 jsdiff(BSD-3-Clause),它实现了 Myers 差异算法,能找出最少的编辑步骤。该库只在需要时加载,不影响其他页面。
  • 默认会先把两段文本都做 Unicode NFC 规范化,这样在 Mac 上复制的韩文(分解形式 NFD)能与在 Windows 上输入的相同文本匹配。关闭该选项可以比较原始码位。
  • 按词模式使用浏览器的 Intl.Segmenter 分词,所以在不用空格的中文和日文中,也只会标出改动的那个词。
  • 计数使用所选单位:按行模式数行,按词模式数以空白分隔的词,按字符模式数非空白字符。
  • 每一侧的上限为:按行 400,000 个字符,按词 200,000 个,按字符 40,000 个;比较超过 4 秒会被停止。
  • 输入较大时,会等你停止输入片刻后再比较,以保持页面流畅。
  • 如果两段文本相同,会提示两者完全相同。

示例

原文 修改后 模式 结果
a / b / c a / B / c / d 按行 行:+2 −1
the quick brown fox the slow brown dog 按词 词:+2 −2
今天天气很好 今天天气不好 按字符 字符:+1 −1
Hello hello 按行,忽略大小写 完全相同

常见问题

什么时候按行、按词或按字符比较?

按行适合代码和配置文件这类以行为单位的内容;按词适合修改过的文章;按字符最适合找出一个字的错别字。中文文章通常用按词或按字符比较。

有大小限制吗?

按行模式下每一侧最多 400,000 个字符,按词模式 200,000 个,按字符模式 40,000 个。字符级对比在大文本上可能耗时很长,所以上限更低;任何超过 4 秒的比较都会停止并显示提示。

“忽略空白”有什么作用?

在按行模式下,它会忽略每行开头和结尾空白的差异。按词模式本身就不在意单词之间空格数量的差异。

我的文本会被上传吗?

不会。比较在浏览器中进行,不会保存或发送任何内容。

没找到想要的工具?