在线工具箱
文本比较

文本比较工具

并排 / 统一视图逐行对比,行内字符级高亮,支持忽略选项与逐处合并。

隐私安全:所有处理均在您的浏览器本地完成,数据绝不上传
文本比较Diff差异高亮合并

输入两段文本

0 行 · 0 字符
0 行 · 0 字符
比较选项(仅影响匹配,不改动原文)

差异结果

差异 0 / 0

输入两段文本后点击「开始对比」,或直接粘贴文本自动对比。

统一差异为 git diff 风格文本(- 删除 / + 新增),便于粘贴到邮件或工单。

逐处合并

每处差异默认「采用右侧」,可逐处切换;合并结果实时更新。

暂无差异可合并。

工作原理

  1. 1左右两栏各输入一段文本,工具会先统一 CRLF / CR 为 LF 并按换行符切分为行数组,再按选项生成「匹配用」的规范化行(小写 / 去尾空白 / 去空白),显示始终使用原文,因此忽略选项不会篡改你的内容。
  2. 2行级差异把规范化后的行视为符号,用 LCS 动态规划求最短编辑脚本(与 Myers 算法等价),得到 equal / del / add 操作序列;相邻的「删除块 + 新增块」会两两配对成「修改行」,避免同一处改动被拆成两行。
  3. 3为控制内存与耗时,先裁剪公共前缀与公共后缀;剩余部分若 DP 单元格超过 400 万(约 2000×2000 行),自动降级为「整体替换」的粗略对比并在页面顶部给出提示。
  4. 4对每个「修改行」再做行内字符级 diff:同样裁剪前后缀后用码点级 LCS 求最短编辑脚本,得到加粗高亮的差异片段;单行超过 4000 字符或差异过大的行不再细算,直接把中间一段整体标记为差异,保证渲染流畅。
  5. 5合并区按「连续的非相同行」聚合为一处差异,每处可选择采用左侧或右侧,选择结果实时拼装成合并文本,并可按 git diff 风格导出统一视图。

常见问题

这个工具和 git diff 的结果一致吗?

行级算法同样基于最长公共子序列(与 Myers 的最短编辑脚本等价),在常见的文本改动上得到的增删改语义与 git diff --no-index 一致。唯一的差异是:本工具会把相邻的「整行删除 + 整行新增」合并显示为「修改行」,以便做行内字符级高亮,这一点与 git 的逐行输出形式不同但信息等价。

忽略大小写 / 空白后,显示的文本会变吗?

不会。忽略选项只作用于「匹配用的副本」,比较用的是规范化后的字符串,而展示与合并输出始终使用你输入的原文。所以「忽略大小写」时 Hello 与 hello 会被视为同一行,但显示出来仍是各自原本的写法。

文本很大时会怎样?

先裁剪公共前后缀再计算,绝大多数实际场景计算量都很小。若剩余部分的 DP 表超过 400 万单元格,工具会降级为粗略对比(不再精细对齐行,只标记整体替换)并在页面给出提示;总行数超过 2 万行时也会提示可能需要数秒。建议超大文本优先分段比较。

「忽略空白变化」和「忽略行尾空白」有什么区别?

忽略行尾空白只去掉每行末尾的空格与制表符,行首缩进、行内空格依然参与比较;忽略空白变化则把行内所有空白字符整体移除后再比较,适合缩进被重排(tab ↔ 空格)或代码被格式化的场景。

合并结果中的「删除行」怎么处理?

某一行只在左侧存在(右侧删除了它)时,选「采用左侧」会保留该行,选「采用右侧」则删除它;只在右侧存在的行(新增行)同理,选右侧才会写入合并结果。默认每处差异都采用右侧,可逐处修改。

文本会上传到服务器吗?可以断网使用吗?

不会。比较与合并全部在浏览器本地完成,不发起任何网络请求,断网状态功能完整可用;也不依赖任何第三方 diff 服务或 CDN。

更多在线工具