none
Remover caracteres especiais! RRS feed

  • 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...
    sexta-feira, 4 de dezembro de 2009 11:57

Respostas

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
    sexta-feira, 4 de dezembro de 2009 12:52
    Moderador
  • 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();
            }
    segunda-feira, 7 de dezembro de 2009 13:42
  • 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
    segunda-feira, 7 de dezembro de 2009 14:25
    Moderador


  • Olá Borges2

    Possibilidades:

    • 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.
    segunda-feira, 7 de dezembro de 2009 16:11


  • 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
    segunda-feira, 7 de dezembro de 2009 16:35
  • 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)
    segunda-feira, 7 de dezembro de 2009 16:44
    Moderador


  • 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.
    segunda-feira, 7 de dezembro de 2009 17:06
  • 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
    segunda-feira, 7 de dezembro de 2009 18:05