是否有任何简单的方法可以在一条指令中用多个字符的javascript替换每个字符的不同替换的字符,就像在PHP中可能的那样?
我的意思是,像:
replace('áéíóú', 'aeiou');
用a取代á,用e取代é,í等等......
提前多多感谢,
答案 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
表示“全局”(整个字符串)。