String.IsNullOrWhiteSpace был представлен в .NET 4. Если вы не ориентируетесь на .NET 4, вы можете легко написать свой собственный:
public static class StringExtensions
{
public static bool IsNullOrWhiteSpace(string value)
{
if (value != null)
{
for (int i = 0; i < value.Length; i++)
{
if (!char.IsWhiteSpace(value[i]))
{
return false;
}
}
}
return true;
}
}
, который можно использовать следующим образом. :
bool isNullOrWhiteSpace = StringExtensions.IsNullOrWhiteSpace("foo bar");
или как метод расширения , если вы предпочитаете:
public static class StringExtensions
{
public static bool IsNullOrWhiteSpace(this string value)
{
if (value != null)
{
for (int i = 0; i < value.Length; i++)
{
if (!char.IsWhiteSpace(value[i]))
{
return false;
}
}
}
return true;
}
}
, который позволяет использовать его напрямую:
bool isNullOrWhiteSpace = "foo bar".IsNullOrWhiteSpace();
Чтобы метод расширения работал, убедитесь, что пространство имен, в котором определен статический класс StringExtensions
, находится в области видимости.
Может быть, IsNullOrWhiteSpace
это метод, который вы ищете? http://msdn.microsoft.com/en-us/library/system.string.isnullorwhitespace.aspx
Я использовал (в .NET v2.0):
public static class StringExtensions
{
public static bool IsNullOrEmptyOrWhitespace(this string value)
{
return string.IsNullOrEmpty(value) || string.IsNullOrEmpty(value.Trim());
}
}
Метод Trim()
удалит все начальные или конечные пробелы, поэтому, если ваша строка полностью пустая, она будет уменьшена до пустая строка.
Я не могу сказать, что производительность была проблемой.
Достаточно забавно, что никто не использует здесь функцию Trim:
public static class StringExtensions
{
public static bool IsNullOrEmptyOrWhiteSpace(this string value)
{
return string.IsNullOrEmpty(value) ||
ReferenceEquals(value, null) ||
string.IsNullOrEmpty(value.Trim(' '));
}
}
Обновление: Я вижу в комментариях, что теперь это было предложено и отклонено по разным причинам, но там оно есть если кто-то предпочитает краткость эффективности ...
Вот еще одна альтернативная реализация, просто для развлечения. Возможно, она не будет работать так же хорошо, как реализация Дарина, но это хороший пример LINQ:
public static class StringExtensions
{
public static bool IsNullOrWhiteSpace(this string value)
{
return value == null || value.All(char.IsWhiteSpace);
}
}
Точная копия исходного кода Microsoft для .NET 4 Framework, ..\ RefSrc \ Source.Net \ 4.0 \ DEVDIV_TFS \ Dev10 \ Releases \ RTMRel \ ndp \ clr \ src \ BCL \ System \ String.cs \ 1305376 \ String.cs
public static bool IsNullOrEmpty(String value) {
return (value == null || value.Length == 0);
}
public static bool IsNullOrWhiteSpace(String value) {
if (value == null) return true;
for(int i = 0; i < value.Length; i++) {
if(!Char.IsWhiteSpace(value[i])) return false;
}
return true;
}
(с http: //msdn.microsoft.com/en-us/library/system.string.isnullorwhitespace.aspx)
IsNullOrWhiteSpace
- это удобный метод, похожий на следующий код, за исключением того, что он обеспечивает превосходную производительность :
return String.IsNullOrEmpty(value) || value.Trim().Length == 0;
Символы пробела определены стандартом Unicode. Метод IsNullOrWhiteSpace
интерпретирует любой символ, который возвращает значение true, когда он передается в метод Char.IsWhiteSpace
как пробельный символ.