这个页面的代码没跑起来。

直接从文件夹里打开 index.html,浏览器会拦下 JavaScript 模块,于是你选好一个文件之后,页面不会有任何反应。改用 http 把这个文件夹提供出去:

powershell -ExecutionPolicy Bypass -File serve.ps1

然后打开 http://localhost:8080/。

文本比对 — 两段文本,并排比较

两段文本进来,每处差异都被标出来,逐行、逐词。没有一个字被贴进别人的服务器。

语言: 简体中文
查看源码
你的文本在浏览器里处理,无须上传处理。

一次比对就是对两串字符做算术,就在这个页面里做完。算法是 Myers 的那一个——和 git diff 用的是同一个——手写在 src/diff.js 里,你可以去读。这个工具没有任何形式的网络功能,没有什么可取,也没有什么可发。这一点在这里格外要紧:人们比对的,是合同、配置文件和尚未发布的代码,而且总是成对出现。

实时检查: 检查中…

离线: 检查中…

不用信我们说的。打开开发者工具,盯着“网络”面板,随便比对点什么。没有哪个请求带走你贴进去的一个字符。嫌麻烦就直接拔掉网线,照样比对。

1 贴上两段文本

空的
空的

2 选好怎么读

忽略空行 这些选项只影响显示。复制和下载的补丁包含所有差异。

3 读一读改了什么

还没有结果。

以 Markdown 查看

怎样在不上传的前提下比对两段文本

  1. 贴上两段文本,或者拖进两个文件。原文在左,改过的在右。同时拖到选择框上的两个文件会按你放下的顺序各落一边;放反了就把两边换过来。
  2. 选好怎么读。并排,或者单列。手机上从单列开始,因为并排需要两栏文字,而手机差不多只装得下一栏;反正菜单就在旁边。
  3. 忽略无关紧要的。空白、大小写、空行——每一样都可以单独忽略,免得一个只是重新排版过的文件读起来像改了一百处。默认把没变的中段折叠成一个数字,每处改动两侧各留三行。
  4. 读一读改了什么。删掉的行标在左边,新增的行标在右边;改动行内部,不同的词会被高亮——两段文字的比对显示的是挪动的那个词,而不是两整段。
  5. 把补丁带走。下载下来的是统一格式的 .patch,代码评审、git apply 和所有差异查看器认的就是它。复制会把同样的内容放进剪贴板。

说得更细的版本

怎样比对两个 JSON 文件 两个文件用同一种方式格式化,键排好序,再比对。为什么生比 JSON 几乎全是噪音,怎么在浏览器里把两边化成规范形,以及什么能一路留到补丁里。

常见问题

我的文本会被传到哪里去吗?

不会。比对是在你自己的浏览器里、你自己的硬件上运行的函数。这个工具没有任何形式的网络功能:它从不去取什么,也从不发出什么;页面的 Content-Security-Policy 里写着它允许联系的每一个地址,没有一个属于本站。这正是拿它来处理合同、配置文件或未发布代码的理由:把这类东西贴进别人的比对器,等于把两个版本一次全交了出去。

这个比对到底在做什么?

它找出把左边那段文本变成右边那段所需的最短一组编辑,用的是 Myers 算法——git diff 用的那个。最短,正是让差异读得下去的关键:在中间插入一行,就该显示为一次插入,而不是后面每一行都变了。在改动行的内部,不同的词也会被标出来,所以比较两段文字时看到的是挪动的那个词,而不是整整两段。

能比对两个文件,而不是两段粘贴吗?

能。把两个同时拖到选择框上,它们会按你放下的顺序各落一边。读它们的是你的浏览器,读进这个页面,而这也是它们唯一去的地方。要是放反了,把两边换过来就行。

比对会输出什么,我能应用它吗?

下载的是一份 unified diff,也就是 @@ -3,5 +3,5 @@ 那种格式,git apply、patch 和所有代码评审工具都读得懂。复制则是把同样的东西放进剪贴板。屏幕上看到的只是它的一种呈现:左右并排,或者单列,未改动的部分折叠成一个计数,除非你要求全部展开。

能忽略空白、大小写或空行吗?

能,每一样单独控制。忽略空白后,只是重新排版过的文件会被比对成没有变化;忽略大小写会把 Error 和 error 当成同一个词;忽略空行会跳过什么都不装的行。这时结果上方的计数会说:把你要求忽略的差异忽略之后,两边是一样的——这和“完全相同”不是同一个论断,页面把两个论断分得清清楚楚。

它能处理多大的比对?

这里没有设上限,因为没有哪台服务器在为上限掏钱。两万行的两段文本只改了几处,眨眼就比完了,因为共同的开头和结尾在真正干活之前就被裁掉了。两段毫无共同之处的文本比对会提前停下并说明,而不是花一分钟去证明本来就明摆着的事;而非常长的比对会画出前几千行,其余交给下载下来的补丁。

它免费吗,需要注册吗?

免费,没有账号,不用登录,没有试用期,贴多少也没有上限。本站带广告,经费就是从那儿来的,广告拿不到任何关于你文本的信息。

断网能用吗?

能。页面加载一次之后断开网络,它照样干活。这也是证明“什么都没上传”最省事的办法,真要把你的文本送出去比对,拔线那一刻就停了。