Notepad++ 透過「尋找並取代」對話框處理換行清理,並啟用規則運算式選項,您可以在其中比對 \r\n、\n 與 \r 字元,並將其取代為單一空格、空字串或段落分隔。這個方法速度很快,且就在您已開啟的編輯器內運作,但規則運算式的設定很容易出錯,像是啟用錯誤的搜尋模式、選錯跳脫字元,或將「取代為」欄位留空,都可能導致空格被壓縮、文字被連在一起,或刪除您原本想保留的標點。一個更聚焦的替代方案是:將文字從 Notepad++ 複製出來,貼到「Line Break Remover」,選擇三種明確模式之一,檢視偵測到與已移除的 token 計數,再把結果複製回文件。所有處理都在您的瀏覽器本地完成,無需上傳,且五種已知的換行 token(CRLF、獨立的 CR、獨立的 LF、U+2028 LINE SEPARATOR,以及 U+2029 PARAGRAPH SEPARATOR)都會根據您選擇的模式進行計數與轉換,而不是從編輯器的渲染結果猜測。

為何 Notepad++ 的規則運算式快速,以及它會在哪裡出錯
Notepad++ 透過 Ctrl+H 開啟「尋找並取代」,並在對話框底部顯示「搜尋模式」面板。將面板切換到「延伸」,您就可以在「尋找目標」欄位中直接輸入 \r\n、\n 或 \r;切換到「規則運算式」,相同的模式也能以相同的跳脫方式運作。將它們取代為單一空格、將欄位留空以刪除它們,或插入兩個 \r\n token 來保留段落分隔。
編輯器實際處理磁碟上的檔案,因此不會有任何資料離開您的機器,數 MB 的日誌檔案處理速度就跟 Notepad++ 能串流它一樣快。問題在於,規則運算式的旗標與對話框設定毫不寬容。一個多選的核取方塊、token 數錯,或「取代為」欄位留空,都會壓縮標點、把來源中本不該相連的文字接在一起——當「延伸」模式碰上 Windows 檔案時,甚至會因為編輯器把未變動的配對寫回,而讓歸位字元加倍。這些都不是隱藏行為,而是對話框的紀錄行為,但在匆忙時很容易忽略。
值得認識的五種換行 token
您需要移除的換行字元取決於文字的來源,而一個忠實的移除工具應該明確處理所有這些 token,而不是只比對編輯器渲染為新行的那部分。
- CRLF(U+000D U+000A) — Windows 的配對。移除工具將其視為單一組合 token,讓統計資料對來源中實際存在的內容保持誠實。
- 獨立的 LF(U+000A) — Unix、Linux 與現代 macOS 的換行。幾乎所有現代匯出都單獨使用這個。
- 獨立的 CR(U+000D) — 較舊的 Classic Mac 檔案、某些產生的資料,以及少數匯入的紀錄仍然單獨使用 CR,且複製時不會改變。
- U+2028 LINE SEPARATOR — 一種 Unicode 換行,文件系統與某些匯出工具會以不可見的方式插入,編輯器中通常不會顯示任何變化。
- U+2029 PARAGRAPH SEPARATOR — 一種更強的 Unicode 換行,代表段落的意圖而非軟換行,某些文書處理器會用它取代一般的 CR 或 LF。
ECMAScript 規格將 line terminators 列為一組定義明確的集合,而 MDN 的詞法文法參考 對 JavaScript 重述了相同的 token。因此,一個以瀏覽器為基礎、逐字走訪字串的移除工具就能在單一傳遞中捕捉該集合的每一個成員,而無需知道是哪個作業系統產生該檔案,或編輯器如何渲染它。
如何使用 Line Break Remover 清理 Notepad++ 的文字
- 在 Notepad++ 中開啟檔案並選取您要清理的行,或按 Ctrl+A 抓取整份文件。按 Ctrl+C 複製。
- 在新的瀏覽器分頁中開啟 Line Break Remover,並將複製的文字貼到輸入區域。
- 從三種明確模式中選擇一種——將每個換行 token 取代為單一空格、將每個 token 取代為空字串,或在保留段落邊界的同時連接單行換行。
- 點擊處理按鈕,並讀取三個計數器:偵測到的 token、已移除的 token,以及剩餘的 token。偵測到的數與「已移除 + 剩餘」總和之間的差異,代表有段落是被刻意保留的。
- 點擊複製按鈕,將轉換後的文字送到剪貼簿。如果瀏覽器封鎖剪貼簿存取,結果會留在畫面上,您可以手動用 Ctrl+A 與 Ctrl+C 選取。
- 切換回 Notepad++,把游標放在清理後文字應出現的位置,然後用 Ctrl+V 貼上。當結果看起來正確後,儲存檔案。
編輯輸入或切換模式會清除先前的結果、驗證訊息與剪貼簿狀態。這個保護機制是有意設計的:它會防止過期的非同步剪貼簿完成動作覆寫您新開始的複製,也讓畫面上的輸出忠實反映是哪一輪輸入所產生。輸入預算為 1,000,000 個 UTF-16 程式碼單位,過大的貼上會在任何轉換執行前被明確的訊息拒絕,因此文字絕不會被切割、取樣或悄悄截斷。
三種模式比較
三種模式共用同一組已識別的 token 與相同的統計資料,但它們將 token 對應到輸出字元的方式不同。
| 模式 | 一個 token 變成 | 兩個連續 token 變成 | 三個連續 token 變成 |
|---|---|---|---|
| 取代為一個空格 | 一個普通空格 | 兩個普通空格 | 三個普通空格 |
| 完全移除 | 空(相鄰文字相連) | 空(相鄰文字相連) | 空(相鄰文字相連) |
| 保留段落 | 一個普通空格 | 兩個 LF 字元(一個空行) | 兩個 LF 字元,其中一個 token 計為已移除 |
「取代為一個空格」對每個已識別的 token 套用一個空格,因此兩個連續的 LF token 會變成兩個空格而不是一個——這個工具有意不壓縮結果。「完全移除」完全不插入任何取代內容,因此原本只以換行分隔的文字最後會被連在一起。「保留段落」將任何兩個或以上不中斷的連續 token 視為單一段落邊界,並將該連段重寫為恰好兩個 LF 字元;恰好一個的連段則變成一個空格。夾在兩個換行之間的任何非換行字元——空格、定位字元,或不斷行空格——會將它們切成分開的連段,各自獨立進行轉換。
移除工具刻意不動的部分
這個合約比通用的空白清理工具更嚴格。空格、重複的空格、定位字元、不斷行空格,以及任何位於開頭或結尾的非換行空白,都會原封不動地通過。這個工具絕不會修剪輸入的開頭或結尾、不會壓縮重複的空格、不會展開定位字元、不會把不斷行空格換成普通空格、不會正規化 Unicode 文字,也不會更改標點與字母。位於開頭與結尾的換行仍會根據您選定的模式進行轉換——它們並不會因為位於輸入邊緣就受到保護。
這個移除工具也不會剖析 Markdown、HTML、CSV 引號規則、原始碼語法、郵寄地址,或任何語意上的文件結構。Markdown 段落內的換行與兩個 Markdown 段落之間的換行,在原始文字中看起來一模一樣,因此這個工具無法知道哪一個對您具有意義。請只在來源中的空行連段確實代表段落時使用段落模式,並在對自然語言採用移除模式前先檢視輸出,因為刪除換行而不補上空格會刻意把不該相連的文字接在一起。
適合這個工作流程的常見 Notepad++ 工作
從 PDF 或聊天紀錄複製出來的硬換行散文,在 Notepad++ 中是一行一個句子,這樣很難重新格式化。將整段貼到移除工具並選擇「取代為一個空格」,可以在不遺失原始行之間空格的情況下重新連接句子。較舊工具產生的試算表匯出與 CSV 傾印,有時會保留僅 CR 的行尾;移除工具會與典型編輯器渲染方式相同的 LF 行尾一起抓到這些內容。
為 API 呼叫準備的提示文字,在提示應為單行時適合用「移除」模式;在提示帶有以空行分隔的結構化段落時,則適合用「保留段落」模式。清理複製的 PDF 文字、在另一次受控轉換前移除紀錄分隔符,以及整理 OCR 輸出,這些都是聚焦且在瀏覽器本地完成會比再調整一次規則運算式更快的場景。
Notepad++ 仍然是進行結構性編輯、以規則運算式驅動的重構,以及處理數 GB 大型檔案的正確地點。對於「以可預測且可檢視的計數轉換已識別的換行 token」這個狹窄工作來說,Line Break Remover 是一條更快的路徑,全程留在您的瀏覽器內,拒絕動任何您沒有要求它更動的內容,並將輸入上限設為一百萬個 UTF-16 程式碼單位,讓過大的貼上會在最前端被拒絕,而不是悄悄截斷。
如果您正在權衡選項,「Remove Text Formatting」是否會剖析 HTML 並去除標記? 對此有詳細說明。
如果您正在權衡選項,在線上移除文字變音符號而不遺失字母 對此有詳細說明。