文本对比 Diff
逐行比对再加词级高亮,增删改分色并给出差异统计。
文本对比把两份文本逐行对齐,标出哪些行没变、哪些行新增、哪些行删除,再把成对的「删一行 + 加一行」识别为「修改」,并在修改行内部继续做词级高亮,精确到改了哪几个字。比对用的是最长公共子序列(LCS)算法,常规规模下结果与 Git、diff 命令一致;结论摆在结果栏上方那条统计条上:新增几行、删除几行、修改几行、相同几行,四个数字跟着输入实时变。
规模上有两道闸:单侧最多 3000 行、约 100 万 UTF-8 字节,超出只比对前面的部分并在提示条写明;两侧行数相乘超过 900 万格时,行级比对改用保守口径(只认头尾公共行,中间一律算一删一增),这类超大输入不再保证最小改动,页面在「比对口径与规模上限」折叠区里把这条讲清楚,而不是默默给你一个更粗的结果。全部计算在浏览器里完成,两份文本不会上传。
文本对比 Diff怎么用
- 上下两栏输入:上面一栏放原文、下面一栏放修改后的文本(窄屏本来就是上下排),各栏标题右侧实时写着自己的行数与字数;输入约 150 毫秒后自动重算,没有需要点的比对按钮。
- 看修改而非删加:成对出现的相邻删除与新增会被合并为「修改 N 行」,改动片段用高亮标出,比逐行删除/新增更好读。结果栏右上有三个按钮决定相同行显不显示:「全部」逐行呈现,「上下文 3 行」只保留改动附近 3 行相同行,「仅差异」把连续相同行折成一行「已折叠 N 行相同内容」的标记行——四种统计数字与这个开关无关,折叠只是显示层的事。
- 行号对照:表格每行左侧的行号来自它所属的那一侧:删除行显示原文(上栏)行号,新增和相同行显示对比文本(下栏)行号,右侧那一列是 + − 符号,正文单独一列可横向滚。
常见问题
对比有没有规模上限?
有两层。第一层是输入:单侧超过 3000 行或约 100 万 UTF-8 字节时只比对前一部分,提示条会写明截断位置。第二层是算法本身:行级 LCS 要填两侧行数相乘那么大的表,超过 900 万格就改用保守口径——只认头尾的公共行,中间全部算成一删一增,此时结果比 diff 命令粗,但不会把浏览器拖死。
词级高亮是按什么切词的?
按空白、连续字母数字(含中文)和单个标点切分,再对切出来的词做 LCS。所以改一个单词只会高亮那个词,而不是整行。
为什么行号看起来对不上?
工具是「并排但独立」的行号:删除行用左(原文)的行号,新增行和相同行用右(新文本)的行号,这样每行的编号都指向它真正来源的那一侧。