Быть или не быть (пустым), вот в чем вопрос…

Это простой, но сложный вопрос.

Прежде всего, когда строка не пуста? Конечно, когда есть хоть один символ или одна цифра.

С нуля

Давайте создадим настраиваемую функцию для достижения этой функциональности.

public static bool IsStringEmpty(string myString){ 
    // do something 
}

Хорошо, теперь нам нужно подумать, как проверить, пуста ли строка myString.

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

public static bool IsStringEmpty(string myString)
{
 return myString == null || myString == String.Empty || myString.Length == 0;
}

Хорошо, у нас все будет хорошо. Но что, если строка содержит только пробелы?

Я имею в виду, что строка «», переданная методу IsStringEmpty, вернет истину.

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

public static bool IsStringEmpty(string myString)
{
 return myString == null || myString == String.Empty || myString.Length == 0;
}

Хорошо, мы рассмотрели наиболее важные сценарии.

Итак, мы можем попробовать метод с нашими значениями:

public static void Main()
{
 var arr = new List()
 {"1", null, " ", String.Empty, "hello"};
 foreach (string txt in arr)
 {
  Console.WriteLine("IsStringEmpty? " + IsStringEmpty(txt));
 }
}
public static bool IsStringEmpty(string myString)
{
 if (myString == null)
  return true;
 myString = myString.Trim();
 return myString == String.Empty || myString.Length == 0;
}

вернусь

IsStringEmpty? False 
IsStringEmpty? True 
IsStringEmpty? True 
IsStringEmpty? True 
IsStringEmpty? False

Отлично. Слишком сложно, не правда ли? И мы просто заново изобрели колесо.

.NET, помоги мне!

C # предоставляет два метода для достижения этого результата: String.IsNullOrEmpty и String.IsNullOrWhiteSpace с небольшой разницей.

String.IsNullOrEmpty проверяет только, содержит ли строка, переданная в качестве параметра, хотя бы один символ, поэтому он не распознает строки, состоящие из пустых символов.

String.IsNullOrWhitespace охватывает сценарий, описанный в этом сообщении. Он проверяет как пустые символы, так и на наличие escape-символов.

string str1 = "hello";
Console.WriteLine(String.IsNullOrEmpty(str1) ) ;  //False 
Console.WriteLine(String.IsNullOrWhiteSpace(str1) ) ;  //False 
string str2 = null;
Console.WriteLine(String.IsNullOrEmpty(str2) ) ;  //True 
Console.WriteLine(String.IsNullOrWhiteSpace(str2) ) ;  //True 
string str3 = "";
Console.WriteLine(String.IsNullOrEmpty(str3) ) ;  //True 
Console.WriteLine(String.IsNullOrWhiteSpace(str3) ) ;  //True 
string str4 = "\n \t ";
Console.WriteLine(String.IsNullOrEmpty(str4) ) ;  //False
Console.WriteLine(String.IsNullOrWhiteSpace(str4) ) ;  //True
string str5 = " ";
Console.WriteLine(String.IsNullOrEmpty(str5) ) ;  //False
Console.WriteLine(String.IsNullOrWhiteSpace(str5) ) ; //True

Подведение итогов

Как видите, .Net предлагает простые методы обработки строк. Не стоит изобретать велосипед, когда все уже сделано.

Спасибо, что прочитали мои статьи. Если вы обнаружили ошибки как в грамматике, так и в содержании, дайте мне знать. Будем признательны за любые предложения! Чао!

Первоначально опубликовано на сайте code4it.dev 1 октября 2018 г.