代码对比工具

粘贴两段文本,一键生成行级差异对比,高亮显示新增、删除与修改

代码对比工具使用说明

行级 Diff:本工具采用最长公共子序列(LCS)算法,将两段文本按行分割后进行逐行对比,精准识别每一行的增删改状态。

  • 绿色行:表示新增内容,仅存在于右侧(修改后)文本中。
  • 红色行:表示删除内容,仅存在于左侧(原始)文本中。
  • 黄色行:表示修改内容,同一位置旧行被替换为新行。
  • 灰色行:表示未变更内容,两侧文本完全一致。

支持对比代码、配置文件、文章草稿、JSON 数据、日志文件等任何纯文本内容。结果可直接复制,方便粘贴到代码审查、文档或邮件中。

提示:如果文本较长,建议先通过 IDE 或编辑器格式化后再进行对比,以获得更清晰的差异结果。

常见问题

"修改"和"删除+新增"有什么区别?为什么我改了一行却显示黄色?

工具逐行比较时,若某个位置旧行被新行替换,算法会把相邻的"删除旧行+新增新行"合并为一条"修改"(黄色);只有纯粹被删掉的行标红,只有纯粹新加入的行标绿。最长公共子序列(LCS)算法会尽量把两侧相同行对齐,所以单行改动通常显示为一条黄色"修改",而不是多条红绿行。查看差异时,黄行说明"这里的内容变了",红绿行说明"这里增删了什么"。

为什么连续相同的行被折叠成"▼ 折叠了 N 行"?展开或复制会丢失吗?

为了减少长文件的滚动量,当连续未变更的行超过 6 行时,工具会把中间部分折叠成一条"折叠了 N 行"的提示,点击它即可展开查看完整内容。折叠只影响页面显示,不影响复制结果——点击"复制结果"输出的始终是包含全部行的完整差异文本,不会因为折叠而丢失任何行。

复制出来的结果是什么格式?能直接当补丁(patch)用吗?

复制结果采用类 unified diff 的纯文本格式:未变更行前加两个空格,新增行以 + 开头,删除行以 - 开头,修改行会同时输出 -旧行 和 +新行 两行。它适合粘贴到代码评审评论、邮件或文档里人工阅读,但缺少 @@ 区块头、文件路径和行号信息,不能直接用 git apply 或 patch 命令应用,只适合作为给人看的差异摘要。

为什么有些明明相同的行被当成不同?换行符会影响结果吗?

会的。工具按行分割文本,行尾的 \r(Windows 的 CRLF 换行符)如果保留,会被算作行内容的一部分,导致两侧看起来相同的行被判为不同。当一边是 Windows 换行、另一边是 Unix 换行时,差异会异常增多。遇到这种情况,先在编辑器里把两边统一成同一种换行符(LF 或 CRLF)再对比。另外空行也会作为一行参与比较,粘贴时注意首尾多余空行。

大文件对比会卡吗?什么样的内容适合用这个工具?

LCS 算法的时间复杂度约为 O(m×n),m、n 是两侧的行数。几百行到几千行的代码、配置、日志对比在浏览器里基本无感;几万行以上的文本计算和渲染耗时会明显增加,极端情况可能卡顿,建议先缩小对比范围。工具只处理纯文本,图片、压缩包等二进制内容无法正确比较,会输出整块乱码式的"新增/删除";这类文件请先导出为 CSV、TXT 等文本格式再对比。