它如何工作
先把两段文本按换行拆成行数组,再用最长公共子序列(LCS)动态规划求出相同行的最大匹配。于是两边的行被分成三类:两边都有的(相同)、只在左边出现的(删除)、只在右边出现的(新增)。
对连续的一段「一删一增」会进一步合并显示,方便看出是改了什么。相似度用 2 × LCS长度 ÷ (旧行数 + 新行数) 计算,取值 0–100%。
为控制内存,当任意一侧超过 3000 行时自动切换为「前缀 + 后缀剥离」的快速模式:先剥掉首尾完全相同的行,只对中间差异区做 DP。这与 Git 的常见做法一致,结果对正常文件没有差别。
差异标记对照
| 标记 | 颜色 | 含义 |
|---|---|---|
| 无色 | 两边完全相同的行 |
- | 红底 | 只在旧文本中存在(被删除) |
+ | 绿底 | 只在新文本中存在(被新增) |
常见问题
为什么看起来一样的行也被标成修改?
多半是行尾不可见字符不同,比如 Windows 的 \r\n 与 Linux 的 \n,或者行尾多了空格、用了全角空格。点击「忽略行首尾空白」再对比一次即可确认。本工具已自动忽略 \r。
支持多大的文本?
两侧各 3000 行以内结果最精确。更大的文本会自动启用快速模式,只对差异区做精细比较,速度仍然很快。
文件会离开我的电脑吗?
不会。文件通过 FileReader 在本地读取后直接进入比较流程,页面没有任何网络请求,可以打开开发者工具的网络面板验证。