如果不想撰寫 REGEXREPLACE 或 SUBSTITUTE 公式,就能從 Google Sheets 儲存格中移除特殊字元,方法是把儲存格文字貼到 特殊字元移除工具,選擇只去除 Unicode 符號或連同標點符號一併去除,然後在已驗證的移除數量旁讀回完全相同的清理結果。這能在任何瀏覽器分頁中運作,最多可在本地處理一百萬個 UTF-16 字碼單元,並保留字母、十進位數字、組合記號、分隔符號以及空白字元原封不動。由於比對規則來自標準化的 P 與 S Unicode General_Category 值,而非手動維護的 ASCII 字形清單,因此清理作業也涵蓋連接符標點(例如底線)、貨幣符號、數學運算子、箭頭、版權標記、許多 emoji,以及非拉丁文寫作系統所使用的標點。對於不想除錯 regex 跳脫字元,或不想串接多個 SUBSTITUTE 呼叫的 Google Sheets 讀者來說,這個瀏覽器工具提供一個可審核的替代方案,其規則可在 Unicode 標準中直接閱讀。

既然 Google Sheets 有尋找與取代,為何還要開啟瀏覽器工具?
Google Sheets 內建尋找與取代 (Ctrl+H) 以及功能強大的 regex 公式,例如 REGEXREPLACE、REGEXMATCH 和 SUBSTITUTE,因此讀到本頁的讀者有充分理由懷疑瀏覽器工具是否值得開啟。誠實的答案是,當目標明確是移除特殊字元時,每種原生 Sheets 方法都有其尖銳的限制。尋找與取代只能比對你能輸入的內容,而許多特殊字元——包括零寬接合符、輔助平面的 emoji、數學運算子,以及非拉丁語系地區的貨幣符號——都無法透過搜尋框可靠地輸入。Regex 公式需要跳脫 regex 元字元、撰寫像 [^\w\s] 這樣的字元類別,並接受 Google Sheets regex 中的 \w 僅涵蓋 ASCII 字母與數字這一事實,除非另行設定 RE2 旗標。SUBSTITUTE 以一次一個字元的方式運作,一旦要排除的符號清單超過三個就會變得難以處理。
特殊字元移除工具藉由比對標準化的 Unicode General_Category 值來迴避這些陷阱,這些值是由 Unicode 聯盟維護,而非人工輸入。標準清單涵蓋的字元比任何單一鍵盤都多,且同一套規則在各家作業系統與 Sheets 版本中的行為都一致。結果面板會在已清理的文字旁顯示被移除字碼點的數量,因此你不必另外重建公式來計算,就能驗證實際改變了什麼。
3 個步驟清理 Google Sheets 儲存格
在瀏覽器分頁中開啟工具、貼上單一儲存格或一整欄儲存格的內容、選擇清理模式,再把清理後的輸出複製回工作表,這個流程包含三個明確的步驟:
- 從 Google Sheets 複製儲存格或範圍,貼到特殊字元移除工具頁面的輸入框中。
- 選擇「符號與標點」以同時移除 Unicode S 符號與 P 標點,或選擇「僅符號」以保留逗號、句號、撇號及其他標點,同時去除貨幣符號、數學運算子、箭頭和 emoji。
- 點擊移除字元並讀取清理後的輸出。輸出結果下方的面板會顯示被移除字碼點的確切數量;複製清理後的輸出,並以值的形式貼回 Sheets。
完成第三步後,請用 Ctrl+Shift+V 貼回 Sheets,僅貼上值,避免從瀏覽器帶入任何非預期的格式。若出現的移除數量為零,代表輸入內容中沒有被比對到的字碼點,而這本身也是一項有用的資訊:它證實輸入內容在所選模式所對應的 Unicode 類別中沒有任何字碼點。透過一個實際範例能讓這兩種設定更具體。字串 Hi, $5! 包含七個 Unicode 字碼點。在僅符號模式中,貨幣符號 (Sc,貨幣符號) 會被移除,留下 Hi, 5! 共六個字碼點,移除數量為一。在廣域模式中,逗號 (Po,其他標點) 和驚嘆號 (Po) 會與貨幣符號一起被移除,留下 Hi 5 共四個字碼點,移除數量為三。
特殊字元移除工具實際比對的內容
此工具比對的是兩個標準化的 Unicode General_Category 群組,定義於 Unicode 技術報告 #44,並透過啟用 Unicode 旗標的 JavaScript Unicode 屬性跳脫 (property escapes) 來套用。選擇「僅符號」會啟用 S 類別;選擇「符號與標點」則會再加上 P 類別。兩種模式都不會試圖從字形外觀推測,這正是它能捕捉到臨時清單所遺漏字元的主要原因。
| 模式 | 比對的 Unicode 類別 | 移除項目 |
|---|---|---|
| 僅符號 | S (Sc, Sk, Sm, So) | 貨幣符號、修飾符號、數學運算子、其他符號 |
| 符號與標點 | P + S (Pc, Pd, Pe, Pf, Pi, Po, Ps, Sc, Sk, Sm, So) | 上述所有項目,加上連接符標點、破折號、括號、引號、逗號與句號 |
$5 中的貨幣符號屬於 Sc,是 S 的子類別,因此在任何模式下都會被移除。foo_bar 中的底線屬於 Pc,是 P 的子類別,因此在僅符號模式下會保留,在廣域模式下則會被移除。CJK 標點符號(例如 、 與 。)屬於 Po,遵循相同的 P 規則。模式切換是此工具唯一開放的控制選項,而非逐字元的核取方塊,因此行為可預測。
哪些保留,哪些被移除
所選類別以外的所有內容都會與原本輸入時完全一致地保留。清理作業純粹是減法:被比對到的字碼點會被刪除,而工具刻意不會插入替代空格、修剪既有空白,或重新排版換行。這對在乎「emoji 可見寬度與空白儲存格寬度之差異」,或在乎「原本以逗號分隔、現已相連的兩個相鄰數字」的 Sheets 讀者而言很重要。
| 屬性 | 範例 | 行為 |
|---|---|---|
| 字母 (L) | A, z, é (預組或分解形式) | 保留 |
| 十進位數字 (Nd) | 0–9,阿拉伯-印度數字 | 保留 |
| 其他數字 (No, NL) | 羅馬數字、 vulgar fractions | 保留 |
| 組合記號 (M) | 組合銳音符 U+0301 位於基礎字母之上 | 保留,基礎字母不變 |
| 空白與分隔符 (Z, s*) | 空格、定位字元、換行 | 保留(永不修剪或合併) |
| Unicode P,僅符號模式 | ,. ! ? : ; " ' - _ | 保留 |
| Unicode S,兩種模式 | $ € + → © 🎉 | 移除 |
| Unicode P,廣域模式 | ,. ! ? : ; " ' - _ | 移除 |
請注意,「組合記號」指的是像組合銳音符 (U+0301) 這類位於基礎字母之上的字元。以 e 後接 U+0301 表示的字元,在輸出中仍會保持相連,因為這兩個字碼點都不屬於 P 與 S,且工具絕不會重新排序或正規化文字。大多數使用者輸入的單一可見帶重音 é 是單一的預組字碼點 (U+00E9),並依相同規則予以保留。
解讀移除數量與合適的停止時機
顯示在「已移除」旁的數字,是被比對到的 Unicode 字碼點數量,而非 UTF-16 字碼單元數。一旦資料中包含 emoji 或輔助平面字元,這項區別就很重要。例如 🎉 這個 emoji 在 Unicode 中是一個輔助平面字碼點,但 JavaScript 因為代理對 (surrogate pairs) 的關係,會將它儲存為兩個 UTF-16 字碼單元。此計數回報的是 Unicode 觀點(一個),而非儲存觀點(兩個),這在推論資料實際包含多少符號時是更實用的數字。
多字碼點的 emoji 序列——包括國旗、膚色家族與按鍵帽序列——則更為複雜。此工具會移除被比對到的符號字碼點,但不會把整個序列一併淨化,因為格式字碼點(例如接合符與變體選擇符)落在 P 與 S 之外,可能會保留。請將結果視為「每個符號字碼點都已移除」,而非「每個 emoji 群集都已移除」。若需要群集層級的檢視,選擇具備 emoji 感知能力的工具才合適。
確切的輸入上限為一百萬個 UTF-16 字碼單元;多出一個單元會在替換前被拒絕,且不會產生部分輸出。空輸入也會被拒絕。編輯輸入或切換模式會立即清除先前的結果,因此面板絕不會顯示來自前一模式的過期輸出。對於典型的 Google Sheets 產品標題、地址或姓名欄,上限基本上絕對不是實際限制;但對於一個被串接成單一字串的百萬列工作表,則有可能觸及上限。
此工具不適合用於 Google Sheets 資料的時機
特殊字元移除工具是一個受控的純文字清理器,而非安全性消毒器。對於將被串接進 SQL、HTML、shell 命令、URL、檔案名稱、使用者名稱或驗證權杖的儲存格值,它是不適合的工具。那些情境下的安全處理,取決於一套針對目的地所設計的允許清單——它必須了解接收系統的精確語法——再加上清理器無法推論的跳脫規則。刪除標記為「特殊」的字元是呈現步驟,而非驗證步驟。
清理作業也不保留語意。移除一個逗號可能把數字從 "1,000" 變成 "1000"。移除貨幣符號可能改變句子的含義。移除 emoji 可能會改變無障礙發音,因為螢幕閱讀器依賴該符號的朗讀名稱。發布前請務必將結果面板與原文核對,並將此工具視為多階段流程中的一個階段,而非最終步驟。對於必須留在 Sheets 內處理的逐儲存格清理,REGEXREPLACE 公式更方便,但它需要你自己撰寫並維護一個字元類別——這正是這個瀏覽器工具設計來避免的陷阱。
如果你正在權衡選項,在 Excel 儲存格中不使用填滿控點重複文字 對此有詳細說明。