为了账号安全,请及时绑定邮箱和手机立即绑定

删除JavaScript字符串中的重音/对话框

删除JavaScript字符串中的重音/对话框

RISEBY 2019-06-15 11:16:41
删除JavaScript字符串中的重音/对话框如何从字符串中删除重音字符?尤其是在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困扰着我,似乎它不喜欢我的正则表达式。
查看完整描述

3 回答

?
Cats萌萌

TA贡献1805条经验 获得超9个赞

与ES 2015/ES6String.Prototype.Normalize(),

const str = "Crème Brulée"str.normalize('NFD').replace(/[\u0300-\u036f]/g, "")> 'Creme Brulee'

这里发生了两件事:

  1. normalize()

    使.

    NFD

    Unicode范式将组合的图形素分解为简单图形的组合。这个

    è

    Crème

    最后表示为

    e + ̀.

  2. 使用正则表达式

    字符类

    要匹配U+0300→U+036F范围,现在只需

    g

    Lobally摆脱了Unicode标准方便地将其分组为

    结合辩证法标记

    Unicode块

有关性能测试,请参见注释。

或者,如果你只想排序

亚细亚有足够的支持~85%,也可以使用多填充。这里但我还没试过呢。

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"]


查看完整回答
反对 回复 2019-06-15
  • 3 回答
  • 0 关注
  • 591 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信