function doReplace(mystring)
{
var utf = {
a: ['á','à','ã','Á','À','Ã'],
e: ['é','ê','É','È'],
i: ['í','Í'],
o: ['ó','õ','Ó','Õ'],
u: ['ú','Ú'],
c: ['ç','Ç']
};
for(var c in utf)
{
var charArray = utf[c];
for (var j = 0; j < charArray.length; j++)
{
mystring= mystring.replace(new RegExp(charArray[j], "g"), c);
}
}
return mystring;
}
它很慢。如果你的瀏覽器編譯的正則表達式(最喜歡的新的做),最快的解決方案可能是每個字符使用正則表達式的一個:
var utf = {
a: ['á','à','ã','Á','À','Ã'],
e: ['é','ê','É','È'],
i: ['í','Í'],
o: ['ó','õ','Ó','Õ'],
u: ['ú','Ú'],
c: ['ç','Ç']
};
var utfRegexes = {};
// Sadly javascript isn't C# so something that could be done in two lines
// of LINQ need to be unrolled.
for(var c in utf)
{
console.log("in " + c);
var chars = "[";
for (var j = 0; j < utf[c].length; j++)
{
chars += utf[c][j];
}
chars += "]";
utfRegexes[c] = new RegExp(chars, "g");
}
function doReplaceRegex(mystring)
{
for(var c in utfRegexes)
{
mystring = mystring.replace(utfRegexes[c], c);
}
return mystring;
}
注意'replace'只會取代指定字符/字符串的第一個實例。 – 2011-02-26 16:42:12
哦耶也可以解決這個錯誤,因爲我已經解決了替換返回它的結果而不是像OP似乎假設那樣改變輸入的事實。 – 2011-02-26 16:47:27