文本对比(Diff)
比较两段文本的差异,支持按行与按词两种粒度,输出统一 diff(+/-/上下文)与新增、删除、未变统计,可忽略大小写、空白与空行。
浏览器本地运行所有计算都在你的浏览器里完成,数据不会离开本机。
对比选项
Diff 结果
按行模式每行前缀为两个空格(未变)、-(删除)、+(新增);按词模式用 [-删除-] 与 {+新增+} 标注行内变化。
在左右两侧输入文本后即可开始对比
这个工具能做什么
- 对比两份配置、两版文案或两段 SQL,确认这次改动到底动了哪几行。
- 按词粒度看行内差异:整行只有几个字变了时,不会把整行标成删除加新增。
- 校对翻译或文稿时开启「忽略空白」「忽略空行」,只关注真正的文字改动。
- 排查「看起来一样却不相等」的字符串:忽略大小写后仍然不同,说明存在不可见字符或标点差异。
示例
输入
左:alpha↵beta↵gamma 右:alpha↵beta changed↵gamma↵delta(按行)
输出
alpha - beta + beta changed gamma + delta
未变行前缀是两个空格,删除是「- 」,新增是「+ 」。统计为新增 2、删除 1、未变 2。按词模式比较「The quick brown fox」与「The quick red fox jumps」会得到 The quick [-brown-] {+red+} fox {+jumps+}。
常见问题
按词模式和按行模式有什么区别?
按行是逐行比较,输出统一 diff 的 +/- 前缀,适合看结构变化;按词把文本切成词(中文按单字切)再比较,输出 [-删除-] 与 {+新增+} 行内标记,适合看一句话里改了哪几个字。按词模式的行内标记不会告诉你行号,改动很大时反而更难读。
为什么大文本会提示超出上限?
算法用 LCS(最长公共子序列)建表,时间和内存都是两个文本行数之积。为避免卡死浏览器,两段的行数乘积超过 400 万格就直接拒绝计算。把文本拆成几段分别比对即可。
忽略空白和忽略空行分别管什么?
「忽略空白」把连续空白视为一个空格并去掉行首行尾空白,用来消除缩进和多余空格造成的假差异;「忽略空行」只在按行比较时生效,会直接丢掉空白行,常用于代码块之间空行不一致的情况。
两段文本相同为什么还显示一堆行?
说明它们只是在当前选项下相同。例如勾选「忽略大小写」后 Hello 和 hello 会被视为未变,但输出里显示的是左侧原文。取消勾选即可看到真实差异。
对比结果会保存或上传吗?
不会。diff 在浏览器里用纯 JavaScript 计算,没有网络请求,刷新页面就全部消失。
关键词:text diffdiff文本对比文本差异compare text统一 diffunified diffLCS代码对比