Remover acentos de strings (C#)
8, abril, 2009
Se você pensou em utilizar replace para remover acentos das string, pode começar a comemorar, pois não vou postar somente uma maneira para fazer isso, mas sim, duas maneiras.
Segue o primeiro exemplo que utiliza a classe Regex
- class System.Text.RegularExpressions.Regex
public string RemoveAcentosComRegEx(string inputString)
{
Regex replace_a_Accents = new Regex("[á|à|ä|â]", RegexOptions.Compiled);
Regex replace_e_Accents = new Regex("[é|è|ë|ê]", RegexOptions.Compiled);
Regex replace_i_Accents = new Regex("[í|ì|ï|î]", RegexOptions.Compiled);
Regex replace_o_Accents = new Regex("[ó|ò|ö|ô]", RegexOptions.Compiled);
Regex replace_u_Accents = new Regex("[ú|ù|ü|û]", RegexOptions.Compiled);
inputString = replace_a_Accents.Replace(inputString, "a");
inputString = replace_e_Accents.Replace(inputString, "e");
inputString = replace_i_Accents.Replace(inputString, "i");
inputString = replace_o_Accents.Replace(inputString, "o");
inputString = replace_u_Accents.Replace(inputString, "u");
return inputString;
}
O segundo exemplo é mais elaborado e utiliza a classe StringBuilder e os Enum’s NormalizationForm e UnicodeCategory
- class System.Text.StringBuilder
- enum System.Text.NormalizationForm
- enum System.Globalization.UnicodeCategory
Importe a API:
using System.Globalization;
public string removeAcentosComNormalizacao(string inputString)
{
if ((inputString == "") || (inputString == null))
return "";
string normalizedString = inputString.Normalize(NormalizationForm.FormD);
StringBuilder sb = new StringBuilder();
for (int i = 0; i < normalizedString.Length; i++)
{
UnicodeCategory uc = CharUnicodeInfo.GetUnicodeCategory(normalizedString[i]);
if (uc != UnicodeCategory.NonSpacingMark)
{
sb.Append(normalizedString[i]);
}
}
return (sb.ToString().Normalize(NormalizationForm.FormC));
}
Espero ter contribuído!

Muito bom esta remocao de acentos utilizando a API Globalization. Show de bola.
Evitar uso de hardcodes é a melhor coisa a se fazer
Com certeza Lucas!
Muito, funciona perfeitamento, grato pela dica!
Que bom que te serviu!!! Abs!