它如何工作
先把两段文本按换行拆成行数组,再用最长公共子序列(LCS)动态规划求出相同行的最大匹配。于是两边的行被分成三类:两边都有的(相同)、只在左边出现的(删除)、只在右边出现的(新增)。
对连续的一段「一删一增」会进一步合并显示,方便看出是改了什么。相似度用 2 × LCS长度 ÷ (旧行数 + 新行数) 计算,取值 0–100%。
为控制内存,当任意一侧超过 3000 行时自动切换为「前缀 + 后缀剥离」的快速模式:先剥掉首尾完全相同的行,只对中间差异区做 DP。这与 Git 的常见做法一致,结果对正常文件没有差别。
差异标记对照
| 标记 | 颜色 | 含义 |
|---|---|---|
| 无色 | 两边完全相同的行 |
- | 红底 | 只在旧文本中存在(被删除) |
+ | 绿底 | 只在新文本中存在(被新增) |
常见问题
为什么看起来一样的行也被标成修改?
多半是行尾不可见字符不同,比如 Windows 的 \r\n 与 Linux 的 \n,或者行尾多了空格、用了全角空格。点击「忽略行首尾空白」再对比一次即可确认。本工具已自动忽略 \r。
支持多大的文本?
两侧各 3000 行以内结果最精确。更大的文本会自动启用快速模式,只对差异区做精细比较,速度仍然很快。
文件会离开我的电脑吗?
不会。文件通过 FileReader 在本地读取后直接进入比较流程,页面没有任何网络请求,可以打开开发者工具的网络面板验证。
怎么用
- 把原文粘进左边框,改后的内容粘进右边框,或直接选择两份文件
- 点开始对比按钮,逐行差异立即高亮显示
- 查看顶部的相似度与增删改统计,需要时点复制把结果导出
适用场景
- 编辑核对稿件修改前后,确认哪些段落被动过
- 程序员比对两份配置文件,找出导致报错的那一行改动
- 合同或条款修订后,快速定位措辞上的细微差别
注意事项
- 按整行精确比较,行尾回车换行的差异也会被算成不同,先统一成同一种换行符再对比。
- 使用最长公共子序列算法,行数越多越耗时,几万行以内比较顺畅,超大文件建议分段处理。
- 只适合纯文本,二进制文件以及 Word、PDF 需要先另存为 txt 再上传。
- 文件通过浏览器本地读取,不会上传到服务器,关闭页面后内容即清空。
- 相似度按行统计,一行里只改动一个字也会整行标为修改。