Javascript一次str_replace很多

Javascript str_replace many at once

本文关键字:replace 很多 str 一次 Javascript      更新时间:2023-09-26

有没有直接的方法可以让一个字符在javascript中替换一个字符,只用一条指令替换每个字符,就像在PHP中一样?

我的意思是,像这样:

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

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

提前非常感谢,

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

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

不是真的。试试这个:

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

是的,你可以在 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表示"全局"(整个字符串)。