跳至主要內容
Lizely

文字差異比對工具

比對兩段受限制的文字版本,逐行進行,並顯示新增、刪除與未變更的行,不會上傳任一邊內容。

隱私權:你的檔案不會離開裝置,所有處理均在瀏覽器本機完成。

使用方式

  1. 1.請將原始文字貼於左側,修改後的文字貼於右側。
  2. 2.選擇「比對行」。
  3. 3.檢視新增(+)、刪除(-)、未變更的行以及總結數值。

關於文字差異比對工具

文字差異比對工具會逐行比對原始版本與修改後的純文字版本。請將兩版本分別貼入左右兩側,執行比對,並檢視單一排序檢視:未變更的行以中性字首標示,新增行以「+」開頭,刪除行以「-」開頭。總結會顯示新增、刪除與未變更的行數。兩段文字皆保留在瀏覽器中,且不會上傳至 Lizely。

比對單位為完整行,而非單一字元或詞語。只有當兩行的字串完全相同(含大小寫、標點符號、首尾空白、空格與換行符)時才視為匹配,包含 Unicode 個字元。因此,單一字元的修改會顯示為一筆刪除與一筆新增。此粗略檢視是刻意設計的:適用於清單、設定檔、日誌、段落與小型程式碼片段的閱讀與理解。

CRLF、獨立的 CR 與 LF 均被視為分隔點,其中 CRLF 被視為一個分隔點。比對過程會標準化分隔點語法以進行分析,但保留每行內容。完全空的輸入為零行;非空文字中的空行為有效行,並與其他行一樣參與比對。

這個演算法計算兩個行陣列的最長公共子序列。用於該子序列的相同行會顯示為未變更。從原始檔案中跳過的行會顯示為刪除,從修改側跳過的行會顯示為新增。重複行可能產生多個有效的最佳對齊方式;此實現使用一個確定性的平局規則,當剩餘子序列長度相等時,會優先選擇新增。

這不是差異補丁生成器。它不會加入行號、偵測移動區塊、忽略空白、轉換大小寫、解析程式語言、標記字元級修改、處理衝突或撰寫任何原始碼。輸出僅為說明性檢視,而非適用於自動化應用的統一差異檔。

每一側的行數上限為 500 行,且 200,000 UTF-16 個字元單位。最長公共子序列比較的計算複雜度與行數平方成正比,因此明確的行數上限可防止貼入大量文件時導致標籤當機。字元限制也限制了輸入的儲存與顯示。超過限制的側會在動態規劃表建立前被拒絕;不會有任何內容被靜默截斷。

表格會儲存各剩餘字尾的子序列長度,然後向前走一次以產生行。每邊最多 500 行時,矩陣維度仍為有限。產生的行保留原始行字串及其在來源中的順序。數值由最終行型別匯出,確保視覺化結果與總結使用相同結果。

可使用文字差異比對工具檢視短暫的設定變更、比對編輯後的複製內容、檢視清單修訂,或確認預期的日誌行。對於來源倉庫,建議使用 Git,因為它能追蹤歷史、檔名、重新命名、差異檔、作者資訊與衝突解決。對於極大檔案,建議使用流式或原生差異工具,而非將其貼入瀏覽器。

顯示的等價性表示根據本工具說明規則的完全字串等價,而非語意等價。不同的 Unicode 正規化形式、視覺上相似的字元、轉義字串內的換行慣例,或隱藏的空白字元都可能導致差異。請檢視目標格式的敏感變更,並在審核完成前保留原始版本。

編輯任一邊內容將清除先前的比對結果。相同的輸入內容將產生相同的決定性結果。此工具不會呼叫任何第三方庫或服務,頁面關閉或重新載入後不會保留歷史紀錄。

方法與來源

拒絕上列 200,000 UTF-16 碼元單位或 500 正規化之 CRLF/CR/LF 捨去行,建立一個有邊界的動態規劃矩陣,用以計算最長公共子序列長度,依精確行等值前進,並採用先加法決策的確定性規則,依來源順序輸出相等、新增或刪除的行,並從這些行匯出統計數值。

常見問題

它會比對單個字元嗎?
不會。比對單位是完整行;若一行被修改,將顯示為一筆刪除與一筆新增。
會忽略空白與大小寫嗎?
不會。行的等價性是完全的,包含大小寫與行內所有空白字元。
為何有 500 行的限制?
最長公共子序列演算法的計算複雜度與行數平方成正比,因此上限可確保瀏覽器記憶體與延遲處於可控範圍。
我的版本會上傳嗎?
不會。分割、比對、行產生與渲染皆在本機完成。

文字工具 使用指南

查看全部