在JavaScript 中刪除字串中的重音符號/變音符號
從字串中刪除重音字元對於文字處理和資料分析來說是一項有用的任務。在提供的程式碼中,accentsTidy 函數嘗試使用正規表示式刪除重音符號。但是,這種方法可能效率不高或不可靠,尤其是在 IE6 等較舊的瀏覽器中。
ES2015/ES6 解
更現代化、更有效率的解決方案是使用ES2015/ES6 String.prototype.normalize() 方法。此方法將字串轉換為 Unicode 標準化形式。透過使用「NFD」形式(將組合字素分解為其基本字元和組合標記),刪除變音符號變得更加容易。以下是範例:
const str = "Crème Brûlée"; str.normalize("NFD").replace(/[\u0300-\u036f]/g, ""); // "Creme Brulee"
正規表示式符合 Unicode 範圍 U 0300 → U 036F,其中包含各種變音符號。其他 Unicode 範式(例如“NFKD”)可用於以不同方式規範化 uFB01 (fi) 等字元。
使用Unicode 屬性轉義
ES2018 引入了Unicode 屬性轉義,提供更簡潔的方法來刪除變音符號:
str.normalize("NFD").replace(/\p{Diacritic}/gu, ""); // "Creme Brulee"
This escape 符合具有Unicode 屬性「Diacritic」的所有字元。
或:排序
如果目標是使用重音符號對字串進行排序,則 Intl.Collator 物件可以是用過的。它支援根據 Unicode 規範順序對字串進行排序,忽略變音符號。這是一個範例:
const c = new Intl.Collator(); ["creme brulee", "crème brûlée", "crame brulai", "crome brouillé", "creme brulay", "creme brulfé", "creme bruléa"].sort(c.compare); // ['crame brulai', 'creme brulay', 'creme bruléa', 'creme brulee', 'crème brûlée', 'creme brulfé', 'crome brouillé']
以上是如何在 JavaScript 中有效地去除字串中的重音符號?的詳細內容。更多資訊請關注PHP中文網其他相關文章!