文本对比工具
粘贴两段文本即可实时查看差异。基于 LCS(最长公共子序列)算法计算行级差异, 并对修改行做行内 LCS 高亮:可选字符级(精确到每个字符)或词级(Git --word-diff 风格,按单词/标点切分), 被删除段标红底、被新增段标绿底。 支持分屏对比与统一 diff 两种视图,配大小写敏感、忽略空白、忽略空行、行内高亮模式切换等比较选项。 所有数据在浏览器本地处理,适合对比配置文件、代码片段、Markdown 文档等。
常见问题
LCS 算法是什么?为什么用它做文本对比?
LCS(Longest Common Subsequence,最长公共子序列)是经典动态规划算法, 用于找出两个序列中最长的、保持相对顺序的公共子序列。在文本对比场景下,把每行视作一个元素, LCS 能找出两段文本中所有相同的行,剩余的行即为新增或删除。
LCS 的优势是结果稳定:相同输入永远得到相同输出,且能最大化保留相同行, 使差异最小化。它的复杂度是 O(m×n)(m、n 为两段文本的行数),对几千行以内的文本足够快。 Git 的 diff 也是基于 LCS 的变种算法(Myers diff)。
分屏对比和统一 diff 有什么区别?
分屏对比:左右两栏并排显示,左侧原文、右侧修改后,删除的行在左侧用红色高亮, 新增的行在右侧用绿色高亮,相同行两侧都显示。适合人工 review,直观对比修改位置。
统一 diff(unified):单栏显示,每行前加 + / - / 空格前缀,
类似 git diff 的输出格式。适合复制粘贴到 commit message、PR 描述、邮件等场景。
本工具的「复制 diff」按钮即复制统一 diff 格式。
为什么我的修改行被识别成「一删一增」而不是「修改」?字符级与词级高亮如何工作?
行级 diff 只能识别整行的删除与新增。如果一行中只改了几个字符, LCS 仍会把它视为「删除旧行 + 新增新行」。要识别行内修改,需要对相邻的 delete+insert 块再做一次更细粒度的 LCS。
本工具提供三种行内高亮模式(工具栏「行内高亮」单选组切换):
- 字符级:按字符做 LCS,精确标记每个被修改的字符。粒度最细,但对版本号
1.0.0 → 2.0.0这类修改可能过于细碎。 - 词级:按单词 / 标点切分后做 LCS,类似
git diff --word-diff。版本号会被视为整体,1.0.0 → 2.0.0只标记整体替换。 - 无:仅行级 diff,不做行内高亮。对比超大文本时可提升性能。
「修改」统计数是相邻的 delete+insert 配对数。
词级切分使用 Unicode 感知正则(\p{L} 字母 + \p{N} 数字),
能正确处理中文、日文等非 ASCII 字符。
「相似度」百分比是怎么算的?
相似度公式:相似度 = 相同行数 / (相同行数 + max(新增行数, 删除行数)) × 100%。
分母用 max 而非 sum,是为了避免「修改一行」被双重计数(修改一行既算删除也算新增,
用 max 取较大值更合理)。
例如两段文本各 100 行,其中 80 行相同、10 行被修改(10 删 10 增), 相似度 = 80 / (80 + 10) = 88.9%。这个指标常用于代码重复度检测、文档相似度评估等场景。
「忽略行首尾空白」和「忽略空行」有什么用?
忽略行首尾空白:比较时去掉每行开头和结尾的空格 / 制表符。适用于对比 缩进不一致的代码(如 Tab vs 4 空格)、Markdown 列表项的缩进差异等。
忽略空行:比较时跳过完全空白的行。适用于对比两段格式不同但内容相同的文本, 例如一段代码被自动格式化工具插入了空行,启用此选项后差异会显著减少。
注意:这两个选项只影响比较时的相等判断,差异结果中仍显示原始行内容, 不会修改你的文本。
能对比 JSON / YAML / TOML 等结构化数据吗?
可以,但本工具做的是纯文本对比(按行 split 后比较)。 如果两段 JSON 的字段顺序不同,即使语义相同,本工具也会标记为大量差异。
对结构化数据,更准确的做法是先格式化(如 JSON 工具 的格式化功能、
YAML 工具、TOML 工具),让字段顺序一致后再对比。
也可以用专门的语义化 diff 工具(如 jd、json-diff)。
支持多大的文本?会卡吗?
LCS 算法的复杂度是 O(m×n),对 1000 行 × 1000 行的文本约需 100 万次比较, 现代浏览器毫秒级完成。对 5000 行 × 5000 行约需 2500 万次比较,可能产生 100ms 级延迟, 仍可接受。
若超过 1 万行,建议先用 diff 命令行工具或专门的性能优化算法
(如 Myers diff 的 O((m+n)·D) 复杂度,D 为差异总数,差异少时极快)。
本工具面向日常对比需求,未做超大文本优化。
数据会上传到服务器吗?
不会。本工具完全在浏览器内运行,所有文本对比在本地完成,不会上传到任何服务器, 也不会被记录。适合对比敏感的配置文件、密钥、合同条款等。