作者热门文章
- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
如何从字符串中删除重音字符?尤其是在 IE6 中,我有这样的东西:
accentsTidy = function(s){
var r=s.toLowerCase();
r = r.replace(new RegExp(/\s/g),"");
r = r.replace(new RegExp(/[àáâãäå]/g),"a");
r = r.replace(new RegExp(/æ/g),"ae");
r = r.replace(new RegExp(/ç/g),"c");
r = r.replace(new RegExp(/[èéêë]/g),"e");
r = r.replace(new RegExp(/[ìíîï]/g),"i");
r = r.replace(new RegExp(/ñ/g),"n");
r = r.replace(new RegExp(/[òóôõö]/g),"o");
r = r.replace(new RegExp(/œ/g),"oe");
r = r.replace(new RegExp(/[ùúûü]/g),"u");
r = r.replace(new RegExp(/[ýÿ]/g),"y");
r = r.replace(new RegExp(/\W/g),"");
return r;
};
但是 IE6 让我很烦,似乎它不喜欢我的正则表达式。
最佳答案
使用 ES2015/ES6 String.prototype.normalize() ,
const str = "Crème Brulée"
str.normalize("NFD").replace(/[\u0300-\u036f]/g, "")
> "Creme Brulee"
注意:如果您希望将 \uFB01
(fi
) 之类的内容标准化(到 fi
),请使用 NFKD
.
这里发生了两件事:
normalize()
ing to NFD
Unicode 范式将组合字素分解为简单字素的组合。 Crème
的 è
最终表示为 e
+ ̀
。从 2021 年起,您还可以使用 Unicode property escapes :
str.normalize("NFD").replace(/\p{Diacritic}/gu, "")
性能测试见评论。
或者,如果您只想排序
Intl.Collator有足够的支持~95% right now ,也可以使用 polyfill here但我没有测试过。
const c = new Intl.Collator();
["creme brulee", "crème brulé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 brulée", "creme brulfé", "crome brouillé"]
["creme brulee", "crème brulée", "crame brulai", "crome brouillé"].sort((a,b) => a>b)
["crame brulai", "creme brulee", "crome brouillé", "crème brulée"]
关于javascript - 在 JavaScript 中删除字符串中的重音符号/变音符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/990904/
COW 不是奶牛,是 Copy-On-Write 的缩写,这是一种是复制但也不完全是复制的技术。 一般来说复制就是创建出完全相同的两份,两份是独立的: 但是,有的时候复制这件事没多大必要
我是一名优秀的程序员,十分优秀!