使用JavaScript

时间:2015-12-01 10:27:02

标签: javascript regex str-replace diacritics

我在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;
}

我确定使用数组或Regex编写此代码的方式更简洁,更简单,但是如何?

提前致谢。

2 个答案:

答案 0 :(得分:0)

这样的事可能适合你:

// 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

答案 1 :(得分:0)

您可以使用关联数组,然后用值

替换键
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/