none
Verificar se existe algum caracter especial em uma String RRS feed

  • Discussão Geral

  • Pessoal, 

    Estou precisando fazer o seguinte, eu tenho uma string com caracter especial, ai eu preciso percorrer essa string para saber se possui mesmo caracter especial, estou fazendo conforme abaixo, mas não está trazendo o resultado correto:

    Exemplo C#:

    string nome = Rodrigo@!;

    bool existeCaracterEspecial = Regex.IsMatch(nome, (@"[!""#$%&'()*+,-./:;?@[\\\]_`{|}~]"));

    Mas o meu maior problema é que mesmo a variável "nome" não tenha caracter especial como exemplo "Rodrigo" o resultado está vindo o mesmo.

    Se puderem me ajudar agradeço.

    quarta-feira, 17 de fevereiro de 2016 20:22

Todas as Respostas

  • Sua Regex parece correta, veja o debug:

    No caso de caractere especial eu utilizaria o código abaixo, ele considera qualquer coisa que não seja letra (maiúscula ou minúscula) ou número um caractere especial:

    string nome = "Rodrigo";
    
    //Se não for letra (maiúscula ou minúscula) ou número considera como um caracter especial
    bool existeCaracterEspecial = Regex.IsMatch(nome, (@"[^a-zA-Z0-9]"));

    quinta-feira, 18 de fevereiro de 2016 01:16
  • Uma dica de ferramenta que ajuda a testar suas Regex:

    http://regexhero.net/tester/

    https://myregextester.com

    https://regex101.com/

    quinta-feira, 18 de fevereiro de 2016 01:17
  • Fala Cesar... blz, eu tinha feito uns testes a mais depois que postei a dúvida e consegui ver que estava certo, mas o estranho é que quando eu tava testando antes... tava trazendo errado o resultado.

    Mas valeu. vou fazer uns testes com o código que você  passou.

    quinta-feira, 18 de fevereiro de 2016 11:59
  • Eu fiz esse método que remove os caracteres especiais, pdoe ser que ajude em algo no futuro.

    public static class StringHelper
        {
            /// <summary>
            /// remove all accents ç ~ for their equivalents
            /// </summary>
            /// <param name="str"></param>
            /// <returns></returns>
            public static string RemoveSpecialCharacters(string str)
            {
                str = str.Replace(" ", "");
                var decomposed = str.Normalize(NormalizationForm.FormD);
                var filtered = decomposed.Where(c => char.GetUnicodeCategory(c) != UnicodeCategory.NonSpacingMark);
                return new String(filtered.ToArray());
            }
    
        }


    Att. Andre de Mattos Ferraz - www.iamferraz.com.br - http://mbsy.co/ldecrespigny/19022985

    quinta-feira, 18 de fevereiro de 2016 12:56
  • Opa valeu! 
    quinta-feira, 3 de março de 2016 13:35
  • Só para contribuir:

    //Verifica existência de caracteres especiais.
     int o = textBox1.Text.Count(p => !char.IsLetterOrDigit(p));
    
    //Remove caracteres especiais. 
                textBox1.Text = string.Join("", textBox1.Text.ToCharArray().Where(char.IsLetterOrDigit));


    Att,


    Antero Marques

    quinta-feira, 3 de março de 2016 15:14