2010-03-31 2 views
17

Что нужно для того, чтобы сделать String.IsNullOrEmpty() подсвеченные пробельные строки пустыми?String.IsNullOrEmpty() Check for Space

Например. Я хочу, чтобы следующий вернуться true вместо обычного false:

String.IsNullOrEmpty(" "); 

Есть ли лучший подход, чем:

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

(Обратите внимание, что исходный вопрос спросил, что возвращение будет нормально, следовательно, несимпатичные комментарии, это было заменено более разумным вопросом).

+8

Вы пробовали это? Он вернет false, поскольку строка, которую вы передаете, не является ни пустой, ни пустой. – Paddy

+3

Почему бы вам не сделать простую тестовую программу и не попробовать самостоятельно? –

+0

Paddy: он вернет false, если я не использую Trim() Я сам пробовал, и именно поэтому я прошу ваших ребят. С моей точки зрения, поскольку разработчик очень часто использует обрезку, он также должен использовать функцию обрезки, но это было то, что я хотел. –

ответ

48

. NET 4.0 представит метод String.IsNullOrWhiteSpace. До тех пор вам нужно будет использовать Trim, если вы хотите иметь дело с белыми пробелами так же, как с пустыми строками.

Для кода не используется .NET 4.0, вспомогательный метод для проверки null или пустых или пробельных строк может быть реализована следующим образом:

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

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

String.IsNullOrEmpty не будет выполнять никакой обрезки и если будет просто проверить string - нулевая ссылка или пустая строка.

+0

Хм, как это будет выглядеть, если вы сделаете это как метод расширения на String, когда .net 4.0 отсутствует? ... или ждать, что вы не можете написать расширение для String только для экземпляров строки, или я здесь не прав? – cyberzed

+0

@cyberzed, это может быть вопрос сам по себе. Вы правы в методах расширений, применяемых только к экземплярам строки. И поскольку новый метод .NET 4.0 является статическим методом в классе 'String', столкновения не произойдет. –

+0

Хе-хе, я придумал ответ сам, как только я нажал кнопку «Добавить комментарий», поэтому решил оставить его в качестве ссылки для других людей :) – cyberzed

11
String.IsNullOrEmpty(" ") 

... Возвращает значение False

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

... Выдает исключение, как foo является Null.

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

... Возвращает истинное

Конечно, вы могли бы реализовать его в качестве функции расширения:

static class StringExtensions 
{ 
    public static bool IsNullOrWhiteSpace(this string value) 
    { 
     return (String.IsNullOrEmpty(value) || String.IsNullOrEmpty(value.Trim())); 
    } 
}