是否有任何直接的方法可以在一条指令中替换多个字符的 javascript 中的字符,并且每个指令都有不同的替换,就像在 PHP 中一样?
我的意思是,类似:
replace('áéíóú', 'aeiou');
将 á 替换为 a,将 é 替换为 e,将 í 替换为 i,以此类推...
非常感谢提前,
是否有任何直接的方法可以在一条指令中替换多个字符的 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
末尾的 表示“全局”(整个字符串)。