Skip to main content
Stack Overflow
  1. About
  2. For Teams

Return to Answer

New sample code
Source Link
Julien Roncaglia
  • 18k
  • 4
  • 61
  • 78
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;
}

Note that one big regexIt's slow. The fastest solution if your browser compile regexes (maybe generated from utflike most new ones do) or walking the string char by char willmight be a lot faster than repetitive replaces.to use one regex per character :

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;
}
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;
}

Note that one big regex (maybe generated from utf) or walking the string char by char will be a lot faster than repetitive replaces.

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;
}

It's slow. The fastest solution if your browser compile regexes (like most new ones do) might be to use one regex per character :

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;
}
added 149 characters in body
Source Link
Julien Roncaglia
  • 18k
  • 4
  • 61
  • 78
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;
}

Note that one big regex (maybe generated from utf) or walking the string char by char will be a lot faster than repetitive replaces.

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(charArray[j], c);
 }
 }
 return mystring;
}
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;
}

Note that one big regex (maybe generated from utf) or walking the string char by char will be a lot faster than repetitive replaces.

Source Link
Julien Roncaglia
  • 18k
  • 4
  • 61
  • 78
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(charArray[j], c);
 }
 }
 return mystring;
}
lang-js

AltStyle によって変換されたページ (->オリジナル) /