2010-12-21 148 views
21

Làm cách nào để kiểm tra chuỗi để đảm bảo chuỗi chỉ chứa số, chữ cái hoặc dấu cách?

Trả lời

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

Một ví dụ có thể được tìm thấy ở đây: http://ideone.com/B1HxA

2

Sử dụng các biểu thức thông thường bên dưới để xác nhận một chuỗi để chắc chắn rằng nó chứa số, chữ cái, hoặc chỉ không gian:

[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

Nếu danh sách các ký tự được chấp nhận là khá nhỏ, bạn có thể sử dụng cụm từ thông dụng như sau:

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

Cụm từ thông dụng được sử dụng ở đây sẽ tìm bất kỳ ký tự nào từ az và 0-9 bao gồm dấu cách (bên trong dấu ngoặc vuông []), có một hoặc nhiều ký tự này (dấu +) có thể sử dụng * cho 0 hoặc nhiều hơn). Tùy chọn cuối cùng cho bộ phân tích cú pháp regex bỏ qua trường hợp.

Điều này sẽ không thành công trên bất kỳ thứ gì không phải là chữ cái, số hoặc không gian. Để thêm nhiều ký tự hơn vào danh sách may mắn, hãy thêm nó vào trong dấu ngoặc vuông.

34

đơn giản:

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

Tại sao câu trả lời này không được bình chọn? Có vẻ đúng và nhanh với tôi. Cách beter hơn lặn vào thế giới regex cho một vấn đề dễ dàng như vậy –

+0

@MarcelloGrechiLins Regex là hoàn toàn hợp lệ và có khả năng nhanh hơn khi sử dụng một Regex biên dịch và tái sử dụng nó trên một số lượng lớn các chuỗi. Như thường lệ với phát triển phần mềm, có sự cân bằng. :-) –

+0

Tôi thực sự sẽ bỏ phiếu này - chỉ với thử nghiệm tối thiểu, nó mang lại sự thật cho \ n, và tôi nghi ngờ bất cứ ai muốn điều đó. Regex ít nhất sẽ giới hạn nó thành các ký tự đặc biệt thực tế. – Charles

3

Hãy thử cách này.

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

     return false; 
    } 
Các vấn đề liên quan