首页 >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​​or 的实例化过程中定义特定的规则。

以上是如何从 JavaScript 中的字符串中删除重音符号?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn