文字比對

免費線上文字比對:貼上兩段文字或開檔,逐行標出新增、刪除與修改的字詞,可忽略大小寫與空白、只看差異。免註冊,資料不上傳。

  • 逐行比對
  • 標出修改字詞
  • 忽略空白大小寫
  • 只看差異

比對結果

文字只在你的瀏覽器裡比對,不會上傳也不會儲存。

🔒 所有計算都在你的瀏覽器內完成,資料不會上傳到任何伺服器。

什麼時候會用到

  • 合約與文件修訂:比較兩版合約或企劃書,找出對方改了哪些字。
  • 程式碼與設定檔:沒有 Git 時,快速比對兩段程式或設定的差異。
  • 論文與作業:確認修改前後的差別,或檢查兩份文字有多少相同。
  • 翻譯與文案校對:比較改稿前後版本,勾選「只顯示差異」快速確認。

使用說明

  1. 把原始文字貼在左邊、修改後的文字貼在右邊,或按「載入左檔/載入右檔」開啟文字檔,下方會即時列出比對結果。
  2. 結果中紅底「−」是只在左邊的行(刪除),綠底「+」是只在右邊的行(新增);修改過的行會成對出現,並用較深的底色標出改動的字詞。
  3. 依需要勾選「忽略大小寫」「忽略空白差異」排除不重要的差異;內容很長時勾「只顯示差異」,相同的段落會收合起來。

實際範例

以預設範例比對兩版 SQL:左邊 5 行、右邊 6 行,結果是 +3 行、−2 行(相同 3 行)。第 1 行從 COUNT(*) AS Cnt 改成 SUM(Amount) AS Total,行內只標出 COUNT→SUM、*→Amount、Cnt→Total,括號與 AS 不標;右邊第 4 行 AND Status = 1 是純新增;最後一行註解只標出「一」改成「二」。

左邊三行 if (x == 1) {、 return TRUE;、},右邊三行 if (x == 1) {、 return true;、}:不勾任何選項時是 +2 行、−2 行,連多出來的空白都會被標出;勾「忽略空白差異」後只剩第 2 行不同(+1、−1),行內只標出 TRUE→true;再勾「忽略大小寫」,三行全部相同。

結果怎麼看

  • 狀態列的「+N 行、−N 行」分別是新增與刪除的行數。修改一行會同時算成刪除 1 行與新增 1 行,所以改了 3 行會顯示 +3、−3。
  • 每列前兩欄是行號:第一欄是左邊(原始)的行號,第二欄是右邊(修改後)的行號;只有一邊有行號代表那行只存在於那一邊。
  • 勾「只顯示差異」時,每個變動前後各保留 2 行相同內容當上下文,其餘收合成「省略 N 行相同內容」。
  • 勾了忽略選項後,被視為相同的行顯示的是右邊的原文,例如忽略大小寫時會顯示修改後的寫法。

原理與計算方法

  • 逐行比對使用 jsdiff 的差異演算法(Myers 的 O(ND) 演算法),找出把左邊變成右邊所需的最少新增與刪除,結果與 git diff 的思路相同。
  • 比對前可先將每一行正規化:忽略空白差異會把連續空白合併成一格並去掉行首行尾空白,忽略大小寫會轉成小寫。正規化只用於比對,畫面仍顯示原文。
  • 相鄰的刪除與新增視為一個修改區塊,依序兩兩配對後再做行內比對:中文與日文逐字比較,英文與程式碼以單字為單位,避免單字被切成零碎字母。
  • 行內比對中相同字元少於較長那行的 30% 時不標行內差異。換行符號 CRLF、CR 都視同 LF,檔尾的一個換行不算差異。
  • 開啟檔案時先用 UTF-8 解碼,若不是合法的 UTF-8 就改用 Big5,對應舊系統或 Excel 匯出的繁體中文檔案。

適用限制

  • 只比對純文字內容,字型、顏色、表格等格式不會比對。
  • 以「行」為單位比對:同一段文字只是換行位置不同,也會整段顯示為修改。
  • 不會偵測搬移:把一段內容移到別處,會顯示成一處刪除加另一處新增。
  • 差異極多的超大檔案比對超過 5 秒會停止並顯示錯誤,請分段比對。
  • 檔案編碼只自動辨識 UTF-8 與 Big5,其他編碼請先另存成 UTF-8。

常見問題

為什麼有些修改過的行沒有標出改動的字?

成對的兩行如果相同的部分不到較長那行的 30%,代表整行幾乎都改寫了,逐字標記只會滿滿都是顏色,所以只用整行的紅綠底表示刪除與新增。

「忽略空白差異」會忽略哪些東西?

連續的空白或 Tab 會視為一個空格,行首與行尾的空白也不計,所以縮排改變、多打的空格不會被算成差異。空行仍然算一行;若要連空行也忽略,請先刪掉多餘的空行。

可以比對 Word、PDF 或 Excel 檔嗎?

只能直接開啟純文字檔(例如 .txt、.csv、.sql、.json、程式碼)。Word、PDF、Excel 請先把內容複製出來貼上,格式與樣式不會被比對。

我貼上的內容會被上傳嗎?

不會。比對完全在你的瀏覽器裡進行,文字不會傳到伺服器,也不會存在瀏覽器裡,關掉頁面就消失,可以放心比對合約或程式碼。

可以用來檢查抄襲嗎?

可以看出兩段文字哪些部分完全相同,但只能比較你手上的兩份文字;它不會搜尋網路上的其他文章,也不是正式的抄襲檢測系統。

為什麼整段都被標成修改?

常見原因是換行方式不同,例如一邊每句換行、一邊整段只有一行。可以先把兩邊整理成相同的換行方式,或勾選「忽略空白差異」再比對。

文字很長也能比對嗎?

一般文件都能在幾秒內完成;差異非常多、超過時間上限時會提示,請縮小範圍或分段比對。

參考來源