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

how to remove special characters in google sheets
如何在 Google Sheets 儲存格中移除特殊字元

既然 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 儲存格

在瀏覽器分頁中開啟工具、貼上單一儲存格或一整欄儲存格的內容、選擇清理模式,再把清理後的輸出複製回工作表,這個流程包含三個明確的步驟:

  1. 從 Google Sheets 複製儲存格或範圍,貼到特殊字元移除工具頁面的輸入框中。
  2. 選擇「符號與標點」以同時移除 Unicode S 符號與 P 標點,或選擇「僅符號」以保留逗號、句號、撇號及其他標點,同時去除貨幣符號、數學運算子、箭頭和 emoji。
  3. 點擊移除字元並讀取清理後的輸出。輸出結果下方的面板會顯示被移除字碼點的確切數量;複製清理後的輸出,並以值的形式貼回 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 儲存格中不使用填滿控點重複文字 對此有詳細說明。