首頁 >web前端 >js教程 >如何從 JavaScript 中的字串中刪除重音符號?

如何從 JavaScript 中的字串中刪除重音符號?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-12-13 16:15:10433瀏覽

How to Remove Accents from Strings in JavaScript?

在JavaScript 中刪除字串中的重音符號/變音符號

為了從字串中刪除重音字符,有必要採用全面的方法涉及字串規範化和字元類別匹配的過程。以下是如何實現此目標的詳細指南:

使用String.prototype.normalize() 的ES2015/ES6 解決方案

const str = "Crème Brûlée";
const accentedCharsRegex = /[\u0300-\u036f]/g;

const normalizedStr = str.normalize("NFD");
const accentsRemovedStr = normalizedStr.replace(accentedCharsRegex, "");

console.log(accentsRemovedStr); // "Creme Brulee"

這裡,normalize(" NFD ") 方法將組合字元(例如è)分解為其組成部分(e 和̀)。隨後,正規表示式 [u0300-u036f] 定位並取代指定 Unicode 範圍內的所有變音標記。

Unicode 屬性轉義方法

在ES2020 中,您可以利用Unicode 屬性轉義以獲得更簡潔的方法:

const str = "Crème Brûlée";
const accentsRemovedStr = str.normalize("NFD").replace(/\p{Diacritic}/gu, "");

console.log(accentsRemovedStr); // "Creme Brulee"

此方法利用p{Diacritic} 屬性轉義來符合所有變音標記,而不是定義特定的Unicode 範圍。

使用Intl.Collat​​or 排序

如果您的主要目標是對重音字串進行排序,可以考慮使用Intl.Collat​​or,它為重音敏感提供了令人滿意的支援排序:

const strArr = ["crème brûlée", "crame brulai", "creme brulee", "crexe brulee", "crome brouillé"];

const collator = new Intl.Collator();
const sortedArr = strArr.sort(collator.compare);

console.log(sortedArr);

預設情況下,Intl.Collat​​or會區分大小寫且不區分重音對字串進行排序。為了實現區分重音的排序,需要在 Intl.Collat​​e 的實例化過程中定義特定的規則。

以上是如何從 JavaScript 中的字串中刪除重音符號?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn