2010-12-21 35 views
21

¿Cómo reviso una cadena para asegurarme de que contiene números, letras o espacio solamente?

Respuesta

4
String test_string = "tesintg#[email protected]#"; 
if (System.Text.RegularExpressions.Regex.IsMatch(test_string, "^[a-zA-Z0-9\x20]+$")) 
{ 
    // Good-to-go 
} 

Un ejemplo se puede encontrar aquí: http://ideone.com/B1HxA

2

Uso la expresión regular a continuación en validar una cadena para asegurarse de que contiene números, letras o único espacio:

[a-zA-Z0-9 ] 
12
string s = @"$KUH% I*$)OFNlkfn$"; 
var withoutSpecial = new string(s.Where(c => Char.IsLetterOrDigit(c) 
              || Char.IsWhiteSpace(c)).ToArray()); 

if (s != withoutSpecial) 
{ 
    Console.WriteLine("String contains special chars"); 
} 
3

Si la lista de caracteres aceptables es bastante pequeña, puede usar una expresión regular como esta:

Regex.IsMatch(items, "[a-z0-9 ]+", RegexOptions.IgnoreCase); 

La expresión regular utilizada aquí busca cualquier carácter de az y 0-9 incluyendo un espacio (dentro de los corchetes []), que hay uno o más de estos caracteres (el signo + - usted puede usar un * para 0 o más). La opción final le dice al analizador de expresiones regulares que ignore el caso.

Esto fallará en cualquier cosa que no sea una letra, número o espacio. Para agregar más personajes a la lista bendecida, agréguela dentro de los corchetes.

34

simple:

function HasSpecialChars(string yourString) 
{ 
    return yourString.Any(ch => ! Char.IsLetterOrDigit(ch)) 
} 
+1

¿Por qué no se resume esta respuesta? Me parece correcto y rápido. Más allá de sumergirse en el mundo de la expresión regular para un problema tan fácil –

+0

@MarcelloGrechiLins Regex es completamente válido y probablemente más rápido cuando se utiliza un Regex compilado y se lo vuelve a utilizar en un gran número de cadenas. Como es habitual con el desarrollo de software, hay compensaciones. :-) –

+0

En realidad votaría por esto - con solo unas pruebas mínimas, esto devuelve verdadero para \ n, y dudo que alguien quiera eso. Regex al menos lo limitará a caracteres especiales reales. – Charles

3

probar este camino.

public static bool hasSpecialChar(string input) 
    { 
     string specialChar = @"\|!#$%&/()=?»«@£§€{}.-;'<>_,"; 
     foreach (var item in specialChar) 
     { 
      if (input.Contains(item)) return true; 
     } 

     return false; 
    } 
Cuestiones relacionadas