Javascript str_replace一次很多

时间:2012-07-06 16:21:54

标签: javascript

是否有任何简单的方法可以在一条指令中用多个字符的javascript替换每个字符的不同替换的字符,就像在PHP中可能的那样?

我的意思是,像:

replace('áéíóú', 'aeiou');

用a取代á,用e取代é,í等等......

提前多多感谢,

3 个答案:

答案 0 :(得分:7)

将正则表达式与全局标志一起使用:

var map = {
    "á": "a",
    "é": "e",
    "í": "i",
    "ó": "o",
    "ú": "u"
};

"áéíóú".replace(/[áéíóú]/g, function(m){
    return map[m];
});

答案 1 :(得分:3)

不是真的。试试这个:

var map = {'á': 'a', 'é': 'e', 'í': 'i', 'ó': 'o', 'ú': 'u'};
var result = 'áéíóú'.replace(/./g, function(m) { return map[m] ? map[m] : m; });

答案 2 :(得分:3)

是的,您可以在JavaScript中执行此操作:

var str = "áéíóú";
var result = str.replace(/[áéíóú]/g, function(m) {
    switch (m) {
        case "á":
            return "a";
        case "é":
            return "e";
        case "í":
            return "i";
        case "ó":
            return "o";
        case "ú":
            return "u";
    }
});

另一种方法是查找表:

var replacements = {
    "á": "a",
    "é": "e",
    "í": "i",
    "ó": "o",
    "ú": "u"
};

var str = "áéíóú";
var result = str.replace(/[áéíóú]/g, function(m) {
    return replacements[m];
});

这些工作是因为replace可以接受正则表达式,而“替换”可以是一个函数。该函数接收匹配为参数的字符串。如果函数没有返回任何内容,或者返回undefined,则保留原始函数;如果它返回别的东西,那就用了。正则表达式/[áéíóú]/g是一个“字符”类,意思是“任何这些字符”,最后的g表示“全局”(整个字符串)。