Проверьте, является ли строка пустой или все пробелы в C # - PullRequest
31 голосов
/ 16 сентября 2011

Как легко проверить, является ли строка пустой или заполнена неопределенным количеством пробелов, или нет?

Ответы [ 4 ]

58 голосов
/ 16 сентября 2011

Если у вас .NET 4, используйте метод string.IsNullOrWhiteSpace :

if(string.IsNullOrWhiteSpace(myStringValue))
{
    // ...
}

Если у вас нет .NET 4, и вы можете стоять, чтобы обрезать свои строки, вы можете сначала обрезать его, а затем проверить, пусто ли оно.

В противном случае, вы можете сами реализовать это:

.Net 3.5 Реализация пространства String.IsNullOrWhitespace с кодовыми контрактами

31 голосов
/ 06 мая 2013

Если вам уже известно, что строка не нулевая, и вы просто хотите убедиться, что это не пустая строка, используйте следующее:

public static bool IsEmptyOrWhiteSpace(this string value) =>
  value.All(char.IsWhiteSpace);
0 голосов
/ 03 мая 2018

Если вам буквально нужно знать, является ли строка пустой или заполнена неопределенным количеством пробелов, используйте LINQ, как подсказывает @Sonia_yt, но используйте All(), чтобы обеспечить эффективное короткое замыкание, как только вынашёл не пробел.

(Это то же самое, что и у Шимми, но отвечает на вопрос ОП, записанный только для * проверка пробелов, а не пробелов - \t, \n, \r, и т. Д. )

/// <summary>
/// Ensure that the string is either the empty string `""` or contains
/// *ONLY SPACES* without any other character OR whitespace type.
/// </summary>
/// <param name="str">The string to check.</param>
/// <returns>`true` if string is empty or only made up of spaces. Otherwise `false`.</returns>
public static bool IsEmptyOrAllSpaces(this string str)
{
    return null != str && str.All(c => c.Equals(' '));
}

И для проверки его в консольном приложении ...

Console.WriteLine("    ".IsEmptyOrAllSpaces());      // true
Console.WriteLine("".IsEmptyOrAllSpaces());          // true
Console.WriteLine("  BOO  ".IsEmptyOrAllSpaces());   // false

string testMe = null;
Console.WriteLine(testMe.IsEmptyOrAllSpaces());      // false
0 голосов
/ 11 января 2018

Попробуйте использовать LinQ для решения?

if(from c in yourString where c != ' ' select c).Count() != 0)

Это вернет true, если строка содержит не все пробелы.

...