【问题标题】:Remove certain characters from a string with JavaScript [duplicate]使用 JavaScript 从字符串中删除某些字符 [重复]
【发布时间】:2016-03-05 05:41:39
【问题描述】:

我用 JavaScript 编写了一个函数,将字符串中的重音符号替换为某些字符。

    function textToURL(str) {
    str = str.replace(/á/gi,'a');   
    str = str.replace(/é/gi,'e');   
    str = str.replace(/í/gi,'i');   
    str = str.replace(/ó/gi,'o');   
    str = str.replace(/ö/gi,'o');   
    str = str.replace(/ő/gi,'o');   
    str = str.replace(/ú/gi,'u');   
    str = str.replace(/ü/gi,'u');   
    str = str.replace(/ű/gi,'u');   
    str = str.replace(/ /gi,'-');   
    return str;
}

我确信有一种更干净、更简单的方法可以用数组或正则表达式编写这段代码,但是如何呢?

提前致谢。

【问题讨论】:

    标签: javascript regex str-replace diacritics


    【解决方案1】:

    你可以使用关联数组,然后用他的值替换键

    str = "áéíóöőúüű "
    
    var myArray = {á:"a", é:"e", í:"i",ó:"o", ö:"o", ő:"o",ú:"u", ü:"u", ű:"u", " ":"-"}
    
    var index;
    for(var key in myArray){
        str = str.replace(key, myArray[key])
    }
    

    这是自己尝试的 jsfiddle 链接:http://jsfiddle.net/7sdoh65a/1/

    【讨论】:

      【解决方案2】:

      这样的事情可能对你有用:

      // define a translator map
      var dict = {"á": "a", "é": "e", "í": "i", "ó": "o", "ú": "u", " ": "-"}
      
      var str = "ápplé órángé"
      
      var repl = str.replace(/[áéíóú ]/g, function($0) { return dict[$0]; });
      //=> apple-orange
      

      【讨论】:

        猜你喜欢
        • 2013-01-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-12-21
        • 2018-11-03
        相关资源
        最近更新 更多