这是相当冗长的,以便于阅读。(好吧,无论如何,对每个人来说都是如此。)
var deaccentuate = (function() {
var conversion =
{ 'a' : /[äàá]/g
, 'e' : /[ëèé]/g
, 'i' : /[ïìí]/g
, 'o' : /[öòó]/g
, 'u' : /[üùú]/g
, 'n' : /ñ/g
, 'A' : /[ÄÀÁ]/g
, 'E' : /[ËÈÉ]/g
, 'I' : /[ÏÌÍ]/g
, 'O' : /[ÖÒÓ]/g
, 'U' : /[ÜÙÚ]/g
, 'N' : /Ñ/g
}
return function(str) {
return Object.keys(conversion).reduce(function(str, c) {
return str.replace(conversion[c], c)
}, str)
}
}())
用法:(http://jsbin.com/UFEbuho/1/)
var input = "ùÙüÜäàáëèéïìíöòóüùúÄÀÁËÈÉÏÌÍÖÒÓÜÚñÑ"
console.log(deaccentuate(input))
这个想法是遍历转换表的键,并将与该键的模式匹配的任何内容替换为键本身。这当然不是最有效的方法,但除非输入字符串相当长,否则它应该无关紧要。