2010-03-31 56 views
17

Điều gì cần thiết để làm cho các chuỗi khoảng trắng trống là String.IsNullOrEmpty()?String.IsNullOrEmpty() Kiểm tra không gian

Ví dụ: Tôi muốn những điều sau đây để trở true thay vì thông thường false:

String.IsNullOrEmpty(" "); 

Có một cách tiếp cận tốt hơn:

String.IsNullOrEmpty(" ".Trim()); 

(Lưu ý rằng câu hỏi ban đầu hỏi sự trở lại sẽ là bình thường do đó nhận xét không cảm thông, điều này đã được thay thế bằng một câu hỏi hợp lý hơn).

+8

bạn đã thử nó? Nó sẽ trả về false, vì chuỗi bạn đang truyền không phải là null hay chuỗi rỗng. – Paddy

+3

Tại sao bạn không thực hiện chương trình thử nghiệm đơn giản và tự mình thử? –

+0

Paddy: nó sẽ trả về false nếu tôi không sử dụng Trim() Tôi đã thử nó bản thân mình và đó là lý do tại sao tôi yêu cầu từ guys của bạn. Từ quan điểm của tôi khi chúng tôi phát triển sử dụng cắt rất thường xuyên, Nó cũng phải sử dụng chức năng cắt, đó là những gì tôi mặc dù. –

Trả lời

48

.NET 4.0 sẽ giới thiệu phương pháp String.IsNullOrWhiteSpace. Cho đến lúc đó, bạn sẽ cần phải sử dụng Trim nếu bạn muốn xử lý các chuỗi dấu cách trắng giống như cách bạn xử lý các chuỗi rỗng.

Đối với mã không sử dụng .NET 4.0, một phương pháp helper để kiểm tra null hoặc chuỗi rỗng hoặc khoảng trắng có thể được thực hiện như thế này:

public static bool IsNullOrWhiteSpace(string value) 
{ 
    if (String.IsNullOrEmpty(value)) 
    { 
     return true; 
    } 

    return String.IsNullOrEmpty(value.Trim()); 
} 

Các String.IsNullOrEmpty sẽ không thực hiện bất kỳ cắt tỉa và sẽ chỉ kiểm tra xem string là một tham chiếu null hoặc một chuỗi rỗng.

+0

Hmm như thế nào sẽ hành xử nếu bạn làm điều đó như là một phương pháp mở rộng trên String khi .net 4.0 là ra? ... hoặc chờ bạn không thể viết một phần mở rộng cho chuỗi chỉ cho các trường hợp của chuỗi, hoặc tôi có sai ở đây? – cyberzed

+0

@cyberzed, đó có thể là một câu hỏi của chính nó. Bạn nói đúng về các phương pháp mở rộng chỉ áp dụng cho các trường hợp chuỗi. Và vì phương thức mới trên .NET 4.0 là một phương thức tĩnh trên lớp 'String', không có va chạm nào xảy ra. –

+0

Hehe, tôi đã đưa ra câu trả lời cho bản thân mình giống như tôi nhấn nút "Add Comment" vì vậy tôi quyết định để nó như là tài liệu tham khảo cho những người khác :) – cyberzed

11
String.IsNullOrEmpty(" ") 

... Trả False

String foo = null; 
String.IsNullOrEmpty(foo.Trim()) 

... Ném một ngoại lệ như foo là Null.

String.IsNullOrEmpty(foo) || foo.Trim() == String.Empty 

... Trả về true

Tất nhiên, bạn có thể thực hiện nó như là một chức năng mở rộng:

static class StringExtensions 
{ 
    public static bool IsNullOrWhiteSpace(this string value) 
    { 
     return (String.IsNullOrEmpty(value) || String.IsNullOrEmpty(value.Trim())); 
    } 
} 
Các vấn đề liên quan