2010-12-21 31 views
21

Sayı, harf veya boşluk içerdiğinden emin olmak için bir dizeyi nasıl kontrol ederim?

cevap

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

bir örneği burada bulunabilir: http://ideone.com/B1HxA

2

kullanımda altında düzenli İfade o sayı, harf veya sadece boşluk içerdiğinden emin olması bir dize doğrulamak için:

[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

Kabul edilebilir karakterlerin listesi oldukça küçükse, şu şekilde normal bir ifade kullanabilirsiniz:

Burada kullanılan normal ifade, bir boşluk (köşeli parantez içinde []) bulunan az ve 0-9 arasındaki herhangi bir karakteri arar, bu karakterlerden biri veya daha fazlası vardır (+ işareti - siz 0 veya daha fazla için * kullanabilirsiniz. Son seçenek, regex ayrıştırıcısının vakayı görmezden gelmesini söyler.

Bu, harf, sayı veya boşluk olmayan hiçbir şeyde başarısız olur. Kutsanmış listeye daha fazla karakter eklemek için, köşeli parantez içine ekleyin.

34

Basit:

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

Bu yanıt neden kesilmiyor? Bana doğru ve hızlı görünüyor. Böylesi kolay bir problem için normal bir dünyaya dalmaktan daha iyi bir yoldur. –

+0

@MarcelloGrechiLins Regex, derlenmiş bir Regex kullanıldığında ve büyük bir dizgiden tekrar kullanıldığında tamamen geçerli ve muhtemelen daha hızlıdır. Yazılım geliştirme ile her zamanki gibi ticaret var. :-) –

+0

Aslında bunu oylamaya çalışacağım - sadece minimum testle, \ n için gerçeği geri getiriyor ve bunun kimsenin bundan şüphelenmesini istiyorum. Regex en azından gerçek özel karakterlerle sınırlayacaktır. – Charles

3

bu şekilde deneyin.

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

     return false; 
    } 
İlgili konular