Usuário com melhor resposta
Remover caracteres especiais!

Pergunta
-
Bom dia! Gostaria de saber se existe alguma função em c# para remover caracteres especiais? Preciso de uma função para receber o valor de um textbox com os caracteres especiais e que retorne esse valor sem os caracteres especiais.. Exemplo: recebe o valor: (paraná) e retorna (parana), ou recebe valor: ('*#@paraná#!-&) e retorna (parana)... Será que existe alguma função para isso? Estou programando em visual studio 2008 (c#) windows forms... Desde já, agradeço pela ajuda e atenção de todos... Muito Obrigado...
Respostas
-
Borges,
Segue alguns links que talvez possam lhe ajudar:
Remover acentuação
http://social.msdn.microsoft.com/Forums/pt-BR/vscsharppt/thread/d86d1def-4774-4fd8-b4fc-2f57a12beb85
Linha de Código - Removendo caracteres especiais
http://www.linhadecodigo.com.br/Dica.aspx?id=1135
Remover caracteres especiais de um arquivo txt - windows form
http://social.msdn.microsoft.com/Forums/pt-BR/vscsharppt/thread/23dc35f9-0ddd-4dda-afd3-23c4f0b5b109
Att.
Ari C. Raimundo- Marcado como Resposta Borges2 segunda-feira, 7 de dezembro de 2009 18:05
-
Borges,
Realmente, se você utilizar o código que mostrou o caracter com acentuação é removido pois o mesmo não está conforme a expressão regular.
Neste link tem um exemplo de um método que remove a acentuação:
Remover acentuação
http://social.msdn.microsoft.com/Forums/pt-BR/vscsharppt/thread/d86d1def-4774-4fd8-b4fc-2f57a12beb85
Tentei assim:
string a = "àÀÜüáéíóúÁÉÍÓÚâÂêÊîÎãÃõÕ";
Console.WriteLine(a);
Console.WriteLine(RemoverAcentos(a));
O retorno foi esse:
àAÜüáéíóúAÉIOUâAêEîIaAoO
aAUuaeiouAEIOUaAeEiIaAoO
Att.
Ari C. Raimundo- Marcado como Resposta Borges2 segunda-feira, 7 de dezembro de 2009 18:05
-
Ari, consegui resolver o problema da seguinte forma:
//3.16 Aceita apenas letras, números e espaçamento... public string RemoverAcentos(string texto) { texto = texto.ToUpper(); string s = texto.Normalize(NormalizationForm.FormKD); StringBuilder sb = new StringBuilder(); for (int k = 0; k < s.Length; k++) { UnicodeCategory uc = CharUnicodeInfo.GetUnicodeCategory(s[k]); if (uc == UnicodeCategory.SpaceSeparator || uc == UnicodeCategory.UppercaseLetter || uc == UnicodeCategory.DecimalDigitNumber) { sb.Append(s[k]); } } return sb.ToString(); }
Valeu Ari, muito obrigado pelos exemplos, pela ajuda e atenção, valeu mesmo...- Marcado como Resposta Borges2 segunda-feira, 7 de dezembro de 2009 18:05
Todas as Respostas
-
Borges,
Segue alguns links que talvez possam lhe ajudar:
Remover acentuação
http://social.msdn.microsoft.com/Forums/pt-BR/vscsharppt/thread/d86d1def-4774-4fd8-b4fc-2f57a12beb85
Linha de Código - Removendo caracteres especiais
http://www.linhadecodigo.com.br/Dica.aspx?id=1135
Remover caracteres especiais de um arquivo txt - windows form
http://social.msdn.microsoft.com/Forums/pt-BR/vscsharppt/thread/23dc35f9-0ddd-4dda-afd3-23c4f0b5b109
Att.
Ari C. Raimundo- Marcado como Resposta Borges2 segunda-feira, 7 de dezembro de 2009 18:05
-
Blz Ari?
Tentei basear no exemplo ref. o link: http://social.msdn.microsoft.com/Forums/pt-BR/vscsharppt/thread/23dc35f9-0ddd-4dda-afd3-23c4f0b5b109
se eu passar como parametro para a função o valor: "JARDIM PARANÁ", o resultado como retorno fica da seguinte forma: "JARDIM PARAN"..
Estou precisando de uma função para remover acentuação das palavras e aceitar letras, números e espaços...A função está da seguinte forma:
//3.16 Remove caracteres especiais public string TiraCaracterEspecial(string valor) { StringBuilder stringBuilder = new StringBuilder(); char[] nome = valor.ToCharArray(); foreach (char letra in nome) { //aceita somente letras do alfabeto, números e espaço if (Regex.IsMatch(letra.ToString(), @"^[a-zA-Z0-9 ]+$")) stringBuilder.Append(letra); } return stringBuilder.ToString(); }
-
Borges,
Realmente, se você utilizar o código que mostrou o caracter com acentuação é removido pois o mesmo não está conforme a expressão regular.
Neste link tem um exemplo de um método que remove a acentuação:
Remover acentuação
http://social.msdn.microsoft.com/Forums/pt-BR/vscsharppt/thread/d86d1def-4774-4fd8-b4fc-2f57a12beb85
Tentei assim:
string a = "àÀÜüáéíóúÁÉÍÓÚâÂêÊîÎãÃõÕ";
Console.WriteLine(a);
Console.WriteLine(RemoverAcentos(a));
O retorno foi esse:
àAÜüáéíóúAÉIOUâAêEîIaAoO
aAUuaeiouAEIOUaAeEiIaAoO
Att.
Ari C. Raimundo- Marcado como Resposta Borges2 segunda-feira, 7 de dezembro de 2009 18:05
-
Olá Borges2Possibilidades:
- Pode aplicar a instrução Server.HTMLDecode sobre a string acentuada
- Exemplo a seguir em VB.NET:
Code Snippet ''' <summary> ''' Método que remove acentos, espaços e carateres indesejados ''' </summary> ''' <param name="texto">Texto a ser Submetido a retirada dos Caracteres Especiais</param> ''' <returns>O texto Formatado sem Caracteres Especiais</returns> Public Shared Function TiraAcentos(ByVal texto As String) As String Const ComAcentos As String = "!#$%¨&*()-?:{}][ÄÅÁÂÀÃäáâàãÉÊËÈéêëèÍÎÏÌíîïìÖÓÔÒÕöóôòõÜÚÛüúûùÇç " Const SemAcentos As String = "________________AAAAAAaaaaaEEEEeeeeIIIIiiiiOOOOOoooooUUUuuuuCc_" For i As Integer = 0 To ComAcentos.Length - 1 texto = texto.Replace(ComAcentos(i).ToString(), SemAcentos(i).ToString()).Trim() Next Return texto End Function
Espero que ajude em algo...
[]'s
Magno Machado Borba |- Se o post foi util ou resposta nao esqueca de marcar. -
Olá Borges2,
Seguem alguns links relacionados com tratamento de acentos e também remoção de caracteres especiais:
Acentuação Asp .Net e Sql Server
http://social.msdn.microsoft.com/Forums/pt-BR/504/thread/a9e4ee29-8135-43a8-a3e4-46dcbdf906ed
Does C# have an equivalent to JavaScript’s encodeURIComponent()?
http://stackoverflow.com/questions/86477/does-c-have-an-equivalent-to-javascripts-encodeuricomponent
Biblioteca de classes do .NET Framework
Método HttpServerUtility..::.HtmlDecode (String)
http://msdn.microsoft.com/pt-br/library/hwzhtkke.aspx
equivalent of Server.HtmlDecode
http://social.msdn.microsoft.com/Forums/en-US/csharpgeneral/thread/d2c4b845-6c72-4a00-9402-fa29940e246a
Server.HtmlDecode Method
http://authors.aspalliance.com/aspxtreme/sys/Web/httpserverutilityclasshtmldecode.aspx
HTMLDecode - Convert an HTML string to a plain text
http://www.devx.com/vb2themax/Tip/19163
Espero que ajude...
[]'s
Magno Machado Borba |- Se o post foi util ou resposta nao esqueca de marcar.- Sugerido como Resposta Magno Machado segunda-feira, 7 de dezembro de 2009 17:00
-
Eu tenho medo dessas funçoes monstros que removem acentos. Eu achei uma elegante (e rapida para alterar muitos registros, no caso de higienizaçao de cadastros)
static string RemoveDiacritics(string stIn) { string stFormD = stIn.Normalize(NormalizationForm.FormD); StringBuilder sb = new StringBuilder(); for(int ich = 0; ich < stFormD.Length; ich++) { UnicodeCategory uc = CharUnicodeInfo.GetUnicodeCategory(stFormD[ich]); if(uc != UnicodeCategory.NonSpacingMark) { sb.Append(stFormD[ich]); } } return(sb.ToString()); }
Mas ela remove só os acentos... será necessario implementar uma rotina para remover os outros caracteres.att
William John Adam Trindade
Analyste-programmeur
----------------------------------------------------------
SOGI INFORMATIQUE LTÉE (http://www.sogi.com) -
Borges2,
Experimente aplicar Server.HTMLDecode na sua variável para que sejam removidos acentos e caracteres especiais. Veja os links que postei anteriormente para entender melhor.
Att,
Magno Machado Borba |- Se o post foi util ou resposta nao esqueca de marcar. -
Ari, consegui resolver o problema da seguinte forma:
//3.16 Aceita apenas letras, números e espaçamento... public string RemoverAcentos(string texto) { texto = texto.ToUpper(); string s = texto.Normalize(NormalizationForm.FormKD); StringBuilder sb = new StringBuilder(); for (int k = 0; k < s.Length; k++) { UnicodeCategory uc = CharUnicodeInfo.GetUnicodeCategory(s[k]); if (uc == UnicodeCategory.SpaceSeparator || uc == UnicodeCategory.UppercaseLetter || uc == UnicodeCategory.DecimalDigitNumber) { sb.Append(s[k]); } } return sb.ToString(); }
Valeu Ari, muito obrigado pelos exemplos, pela ajuda e atenção, valeu mesmo...- Marcado como Resposta Borges2 segunda-feira, 7 de dezembro de 2009 18:05