跳到主要内容

免费文本差异对比

对比两段文本,精确查看变化内容。逐行显示新增、删除和未变更的行。

加载后可离线使用
上下文:
+3 已添加−2 已删除2 未更改
差异
+The quick brown fox leaps over the lazy dog.
−The quick brown fox jumps over the lazy dog.
Pack my box with five dozen liquor jugs.
+How amazingly quick daft zebras jump!
−How vexingly quick daft zebras jump!
The five boxing wizards jump quickly.
+Now is the time for all good men.

常见用途

  • 比较代码片段确切地发现两个版本的代码片段、配置或脚本之间的更改内容。
  • 比较文档草稿找到文档、合同或文章的两份草稿之间的每一个更改 — 逐行。
  • 比较数据和CSV文件发现导出数据、CSV、日志或配置的两个版本之间的差异。
  • 比较翻译版本查看翻译文档、字幕文件或本地化字符串的两个版本之间的变化。
  • 跟踪内容修订中的变化比较文章、博客文章或营销文案的原始版本和编辑版本以审查所做的更改。

工作原理

文本比较使用直接在此工具中实现的手写最长公共子序列(LCS)算法——没有外部 diff 库。一切都在浏览器中运行;你的文本绝不会发送到服务器。

  1. 1
    将文本拆分为行
    每个文本框的内容按换行符拆分为行数组。可选的规范化(转小写、折叠空白)会在比较前应用于这些数组的副本,原始内容保留用于显示。
  2. 2
    在 Uint32Array 中计算 LCS 表
    在类型化的 Uint32Array 中自底向上构建动态规划表——时间和内存都是 O(m×n)。对于合计单元格数将超过 400 万(约 16 MB)的输入,算法会自动回退为较粗粒度的块比较,使页面保持响应。
  3. 3
    在更改的行上进行单词级高亮
    当删除的行后面紧跟插入的行时,会对这一对行按空白拆分的单词再运行一次 LCS。这会生成内联高亮片段,准确显示行内哪些单词发生了变化,而不仅仅是哪些行发生了变化。
  4. 4
    带上下文折叠的统一 diff 视图
    操作列表以统一 diff 格式呈现,带 +/− 前缀和颜色标记。可配置上下文窗口(默认 3 行)之外的未更改行会折叠为省略号。完整结果可以复制到剪贴板或下载为纯文本 .txt 文件。

相关工具

常见问题