Eu tenho uma string de entrada e quero verificar se ela contém:
- Apenas letras ou
- Apenas letras e números ou
- Apenas letras, números ou sublinhado
Para esclarecer, eu tenho 3 casos diferentes no código, cada um pedindo validação diferente. Qual é a maneira mais simples de conseguir isso em c #?
fonte
Regex
para todas as letras e 3x mais rápido que o compiladoRegex
para todas as letras com aIgnoreCase
opção (!).Somente letras:
Letras e números:
Letras, números e sublinhado:
Observe que esses padrões também correspondem a caracteres internacionais (ao contrário de usar a
a-z
construção).fonte
Para aqueles que preferem não usar o Regex e estão no .NET 2.0 Framework (AKA no LINQ):
Apenas letras:
Apenas números:
Apenas números ou letras:
Somente números ou letras ou sublinhados:
fonte
Eu acho que é um bom caso usar expressões regulares:
fonte
Você pode fazer um loop nos caracteres da string e verificar usando o método Char IsLetter, mas também pode fazer um truque usando o método String IndexOfAny para pesquisar outros caracteres que não devem estar na string.
fonte
Itere através de caracteres de strings e use funções de 'Char' chamadas 'IsLetter' e 'IsDigit'.
Se você precisar de algo mais específico - use a classe Regex.
fonte
Se você é um novato, pode consultar o meu código. O que fiz foi marcar um cheque para que eu pudesse obter apenas os alfabetos e os espaços em branco! Você pode repetir o loop for após a segunda instrução if para validar a sequência novamente
fonte
Recentemente, fiz melhorias de desempenho para uma função que verifica letras em uma string com a ajuda desta página.
Eu descobri que as soluções com regex são 30 vezes mais lentas que as da verificação Char.IsLetterOrDigit.
Não tínhamos certeza de que essas letras ou dígitos incluíam e precisávamos apenas de caracteres latinos, portanto implementamos nossa função com base na versão descompilada da função Char.IsLetterOrDigit.
Aqui está a nossa solução:
E o uso é assim:
fonte
Encontre o método para validar se char é letra, número ou espaço; caso contrário, anexe o sublinhado (fique à vontade para modificar de acordo com suas necessidades)
fonte