Home
C#
Como remover acentos e caracteres especiais de uma string em C#
Como remover acentos e caracteres especiais de uma string em C#
Índice
1- Substituir caracteres especiais utilizando Regular Expression
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:
Mais sobre Regular Expressions, aqui:
Tutorial Regular Expressions
2- Substituir acento
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"
3- Código do exemplo
O código do exemplo está disponível em:
https://github.com/educoutinho/string-functions-example
Comentários
Please enable JavaScript to view the comments powered by Disqus.