列表比較工具(提取共同行與差異行)

比較兩個文本列表(每行一項),通過集合運算自動提取兩者共有的行、僅A存在的行、僅B存在的行。適合郵件名單核對、庫存清單去重等場景。全部處理在瀏覽器內完成,輸入內容不會發送到伺服器。

使用提示

  • 將郵件訂閱列表與退訂列表進行比較,可以一次性提取出應從下次傳送中排除的地址。
  • 將庫存清單與採購訂單列表比較,能快速找出尚未下單的商品。
  • 每一行都會自動去除首尾空白後再比較,因此複製貼上時混入的多餘空格不會影響結果。
  • 即使同一行在輸入中出現多次,結果中也只會顯示一次去重後的行,方便整理雜亂的列表。
  • 取消勾選"區分大小寫"後,可以將Example.com和example.com這類拼寫差異視為同一行處理。

常見問題

Diff比較工具會保持行的原有順序逐行對齊兩份文本,檢測出新增或刪除的行。本工具則忽略順序,將兩個列表視為集合,提取共同行以及各自獨有的行。如果同一行內容出現在不同的位置,Diff比較工具會將其判定為差異,而本工具會將其視為共同行。

即使同一行內容在輸入中出現多次,比較結果中也只會作為去重後的唯一行顯示一次。本工具不支援按出現次數進行比較。

預設情況下會區分大小寫進行比較。取消勾選"區分大小寫"後,可以將Example和example這類拼寫差異視為同一行。

每行首尾的空白會被自動去除,去除後內容變為空的行(空行)會被排除在比較範圍之外。貼上列表時無需擔心其中混有空行。

不會。比較處理完全在瀏覽器內的JavaScript中完成,輸入的列表內容不會被發送到伺服器。即使是包含郵箱地址等個人資訊的列表,也可以放心使用。
ツールくん

閒話 ― 用"集合運算"比較列表的思路

求兩個列表的"差異"並非只有一種方法。像文本差異(Diff)工具那樣的逐行diff演算法,會在保持行順序的前提下尋找對應關係,因此適合追蹤原始碼或配置檔案的修改歷史。而對於郵箱地址、庫存編碼這類本身就不講究順序的列表,用數學中的集合運算(交集、差集)來思考會更加直觀。本工具採用的正是後一種思路。

在集合運算中,"交集(intersection)"指同時屬於兩個集合的元素,"差集(difference)"指只屬於其中一個集合的元素。本工具中的"共同行"對應交集(A∩B),"僅A存在的行"和"僅B存在的行"則分別對應差集(A−B、B−A)。雖然數學上是簡單的操作,但在實務中被廣泛用於客戶名單去重、篩選傳送物件等場景。

在實現上,本工具比較時使用JavaScript的Map物件,以標準化後的鍵(區分大小寫時保持原樣,不區分時轉換為小寫)為索引,記錄每個鍵首次出現時的原始寫法。這樣即使是數千行規模的列表也能快速完成比較,同時輸出的行仍能保留原始的大小寫寫法。