Быть или не быть (пустым), вот в чем вопрос…
Это простой, но сложный вопрос.
Прежде всего, когда строка не пуста? Конечно, когда есть хоть один символ или одна цифра.
С нуля
Давайте создадим настраиваемую функцию для достижения этой функциональности.
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 г.