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

删除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困扰着我,似乎它不喜欢我的正则表达式。



RISEBY
浏览 662回答 3
3回答

Cats萌萌

与ES 2015/ES6String.Prototype.Normalize(),const str = "Crème Brulée"str.normalize('NFD').replace(/[\u0300-\u036f]/g, "")> 'Creme Brulee'这里发生了两件事:normalize()使.NFDUnicode范式将组合的图形素分解为简单图形的组合。这个è的Crème最后表示为e + ̀.使用正则表达式字符类要匹配U+0300→U+036F范围,现在只需gLobally摆脱了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"]
打开App,查看更多内容
随时随地看视频慕课网APP