A função abaixo utiliza Regular Expression para substituir caracteres especiais de uma string
public static string RemoveSpecialCharacters(string text, bool allowSpace = false)
{
string ret;
if (allowSpace)
ret = System.Text.RegularExpressions.Regex.Replace(text, @"[^0-9a-zA-ZéúíóáÉÚÍÓÁèùìòàÈÙÌÒÀõãñÕÃÑêûîôâÊÛÎÔÂëÿüïöäËYÜÏÖÄçÇ\s]+?", string.Empty);
else
ret = System.Text.RegularExpressions.Regex.Replace(text, @"[^0-9a-zA-ZéúíóáÉÚÍÓÁèùìòàÈÙÌÒÀõãñÕÃÑêûîôâÊÛÎÔÂëÿüïöäËYÜÏÖÄçÇ]+?", string.Empty);
return ret;
}
Exemplos de entrada e saída:
"teste!@#&#" -> "teste"
Mais sobre Regular Expressions, aqui: Tutorial Regular Expressions
A função C# abaixo substitui caracteres com acento pelo seu equivalente sem acento, por exemplo, troca “á” por “a” e “ç” por “c” sem perder o maiúsculo e minúsculo do texto.
public static string RemoveDiacritics(string text)
{
if (string.IsNullOrEmpty(text))
return text;
StringBuilder sb = new StringBuilder();
for (int i = 0; i < text.Length; i++)
{
if (text[i] > 255)
sb.Append(text[i]);
else
sb.Append(s_Diacritics[text[i]]);
}
return sb.ToString();
}
private static readonly char[] s_Diacritics = GetDiacritics();
private static char[] GetDiacritics()
{
char[] accents = new char[256];
for (int i = 0; i < 256; i++)
accents[i] = (char)i;
accents[(byte)'á'] = accents[(byte)'à'] = accents[(byte)'ã'] = accents[(byte)'â'] = accents[(byte)'ä'] = 'a';
accents[(byte)'Á'] = accents[(byte)'À'] = accents[(byte)'Ã'] = accents[(byte)'Â'] = accents[(byte)'Ä'] = 'A';
accents[(byte)'é'] = accents[(byte)'è'] = accents[(byte)'ê'] = accents[(byte)'ë'] = 'e';
accents[(byte)'É'] = accents[(byte)'È'] = accents[(byte)'Ê'] = accents[(byte)'Ë'] = 'E';
accents[(byte)'í'] = accents[(byte)'ì'] = accents[(byte)'î'] = accents[(byte)'ï'] = 'i';
accents[(byte)'Í'] = accents[(byte)'Ì'] = accents[(byte)'Î'] = accents[(byte)'Ï'] = 'I';
accents[(byte)'ó'] = accents[(byte)'ò'] = accents[(byte)'ô'] = accents[(byte)'õ'] = accents[(byte)'ö'] = 'o';
accents[(byte)'Ó'] = accents[(byte)'Ò'] = accents[(byte)'Ô'] = accents[(byte)'Õ'] = accents[(byte)'Ö'] = 'O';
accents[(byte)'ú'] = accents[(byte)'ù'] = accents[(byte)'û'] = accents[(byte)'ü'] = 'u';
accents[(byte)'Ú'] = accents[(byte)'Ù'] = accents[(byte)'Û'] = accents[(byte)'Ü'] = 'U';
accents[(byte)'ç'] = 'c';
accents[(byte)'Ç'] = 'C';
accents[(byte)'ñ'] = 'n';
accents[(byte)'Ñ'] = 'N';
accents[(byte)'ÿ'] = accents[(byte)'ý'] = 'y';
accents[(byte)'Ý'] = 'Y';
return accents;
}
Exemplos de entrada e saída:
"Maça" -> "Maca"
"José da Silva" -> "Jose da Silva"
"Coração" -> "Coracao"
O código do exemplo está disponível em:
https://github.com/educoutinho/string-functions-example