2010-12-21 36 views
21

Come si controlla una stringa per assicurarsi che contenga solo numeri, lettere o spazio?

risposta

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

Un esempio può essere trovato qui: http://ideone.com/B1HxA

2

usare l'espressione regolare di seguito in per convalidare una stringa per assicurarsi che contenga numeri, lettere, o lo spazio solo:

[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

Se l'elenco di caratteri accettabili è piuttosto piccolo, è possibile utilizzare un'espressione regolare come questa:

L'espressione regolare usata qui cerca qualsiasi carattere da az e 0-9 compreso uno spazio (cosa c'è dentro le parentesi quadre []), che ci sono uno o più di questi caratteri (il segno + - tu può usare un * per 0 o più). L'opzione finale dice al parser regex di ignorare il caso.

Ciò non riuscirà su tutto ciò che non è una lettera, numero o spazio. Per aggiungere più personaggi all'elenco benedetto, aggiungilo tra parentesi quadre.

34

Semplice:

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

Perché questa risposta non è stata alzata? Sembra corretto e veloce per me. È più facile che immergersi nel mondo regex per un problema così semplice. –

+0

@MarcelloGrechiLins Regex è completamente valido e probabilmente più veloce quando si utilizza un Regex compilato e riutilizzarlo su un numero maggiore di stringhe. Come al solito con lo sviluppo del software ci sono dei compromessi. :-) –

+0

In realtà voterei contro - con un test minimo, riporta vero per \ n, e dubito che qualcuno lo voglia. Regex lo limiterà a veri e propri caratteri speciali. – Charles

3

provare in questo modo.

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

     return false; 
    } 
Problemi correlati