2

是否有任何直接的方法可以在一条指令中替换多个字符的 javascript 中的字符,并且每个指令都有不同的替换,就像在 PHP 中一样?

我的意思是,类似:

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

将 á 替换为 a,将 é 替换为 e,将 í 替换为 i,以此类推...

非常感谢提前,

4

3 回答 3

7

使用带有全局标志的正则表达式:

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

"áéíóú".replace(/[áéíóú]/g, function(m){
    return map[m];
});
于 2012-07-06T16:26:21.550 回答
3

并不真地。试试这个:

var map = {'á': 'a', 'é': 'e', 'í': 'i', 'ó': 'o', 'ú': 'u'};
var result = 'áéíóú'.replace(/./g, function(m) { return map[m] ? map[m] : m; });
于 2012-07-06T16:26:55.617 回答
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末尾的 表示“全局”(整个字符串)。

于 2012-07-06T16:27:43.527 回答