Как проверить, является ли объект NSString
пустым в Objective-C?
ios
objective-c
nsstring
Джейми МакЭлвин
источник
источник
@"\u200B"
(состоящий только из символа Unicode ZERO WIDTH SPACE . При его распечатке будет напечатано 0 символов (проверьте, используя моноширинный шрифт), но string.length даст 1. Существуют другие символы Unicode (например, OBJECT REPLACEMENT CHARACTER ), которые ведут себя аналогично. Вы можете получить последний при разборе текста PDFZERO WIDTH SPACE
на самом деле не имеет значения, потому что, тем не менее ,@"\u200B"
является символом, поэтому, если вы проверите, чтобы строка была пустой, она скажет, что это не потому, что в ней есть символ. Это просто не для печати в соответствии со стандартом Unicode.![string length]
. Кажется более чистым.Марк отвечает правильно. Но я воспользуюсь этой возможностью, чтобы включить указатель на обобщение Уила Шипли
isEmpty
, которым он поделился в своем блоге :источник
-isNotEmpty
:)Первый подход действителен, но не работает, если в вашей строке есть пробелы (
@" "
). Поэтому вы должны очистить эти пробелы перед тестированием.Этот код очищает все пробелы с обеих сторон строки:
Хорошая идея - создать один макрос, поэтому вам не нужно вводить эту строку монстра:
Теперь вы можете использовать:
источник
NSString
категорией, которая добавляет метод с именем,trimmedString
который делает именно то, что вы написали.whitespaceCharacterSet
нет новых строк! Вот категория, которую я написал, включаяtrim
некоторые другие полезные методы: github.com/alexch/unsuck/blob/master/unsuck/NSString%2BUnsuck.m github.com/alexch/unsuck/blob/master/unsuckTests/…Одно из лучших решений, которое я когда-либо видел (лучше, чем у Мэтта Дж), - это улучшенная встроенная функция, которую я использовал в репозитории Git Hub (Уил Шипли, но я не могу найти ссылку):
источник
condenseToSingleNSData(id thing)
?expandToNSArray(id thing)
? Рано или поздно вы будете спрашивать, с каким классом вы имеете дело, лучше сделать это при первом обращении.Вы должны лучше использовать эту категорию:
источник
@implementation NSString (Empty) - (BOOL) empty{ return ([[self stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]]length] == 0); } @end
как комбинация ответа Марка и Кайла.Я положил это:
Проблема в том, что если self равно nil, эта функция никогда не вызывается. Он вернет ложь, что желательно.
источник
-(BOOL)isEmpty{ return ![self isNotEmpty]}
не будет работать на категории.condenseToSingleNSData(id thing)
?expandToNSArray(id thing)
? Рано или поздно вы будете спрашивать, с каким классом вы имеете дело, лучше сделать это при первом обращении.Другой вариант заключается в проверке , если она равна
@""
сisEqualToString:
примерно так:источник
Просто передайте свою строку следующему методу:
источник
Просто используйте один из
if
else
условий, как показано ниже:Способ 1:
Способ 2:
источник
Swift Version
Несмотря на то, что это вопрос по Objective C, мне нужно было использовать его
NSString
в Swift, поэтому я также включу ответ здесь.Или, если
NSString
это необязательно:Обычная
String
версия SwiftСмотрите также: Проверить пустую строку в Swift?
источник
Может быть, этот ответ является дубликатом уже предоставленных ответов, но я немного изменил и изменил порядок проверки условий. Пожалуйста, обратитесь ниже код:
источник
Вы можете проверить, пуста ли ваша строка или нет, используя этот метод:
Рекомендуется, чтобы общий класс говорил UtilityClass и рекламировал этот метод, чтобы вы могли использовать этот метод, просто вызывая его через свое приложение.
источник
У вас есть 2 способа проверить, является ли строка пустой или нет:
Давайте предположим, что ваше имя строки
NSString *strIsEmpty
.Способ 1:
Способ 2:
Выберите любой из приведенных выше методов и узнайте, является ли строка пустой или нет.
источник
Просто проверьте длину строки
сообщение NIL вернет ноль или 0, так что нет необходимости проверять ноль :).
Удачного кодирования ...
источник
Это работает как шарм для меня
Если
NSString
этоs
источник
Таким образом, помимо основной концепции проверки длины строки меньше 1, важно глубоко рассмотреть контекст. Языки человек или компьютер или иным образом могут иметь разные определения пустых строк, и в этих же языках дополнительный контекст может дополнительно изменить значение.
Допустим, пустая строка означает «строку, которая не содержит символов, значимых в текущем контексте».
Это может означать визуально, так как цвет и цвет фона в атрибутивной строке совпадают. Эффективно пусто.
Это может означать пустой значащих символов. Все точки или все тире или все подчеркивания могут считаться пустыми. Кроме того, пустой из значимых значащих символов может означать строку, в которой нет символов, понятных читателю. Это могут быть символы языка или набора символов, определенные для читателя как бессмысленные. Мы могли бы определить это немного по-другому, говоря, что строка не содержит известных слов в данном языке.
Мы могли бы сказать, что empty является функцией процента отрицательного пространства в визуализированных глифах.
Даже последовательность непечатаемых символов без общего визуального представления не является действительно пустой. Управляющие персонажи приходят на ум. Особенно низкий диапазон ASCII (я удивлен, что никто не упомянул о них, поскольку они содержат много систем и не являются пробелами, поскольку обычно у них нет глифов и визуальных метрик). И все же длина строки не равна нулю.
Вывод. Только длина не единственная мера здесь. Контекстное членство в наборе также очень важно.
Членство в наборе символов является очень важной общей дополнительной мерой. Значимые последовательности также довольно распространены. (подумайте SETI, или крипто, или капчи). Также существуют дополнительные более абстрактные контекстные наборы.
Поэтому тщательно подумайте, прежде чем предполагать, что строка пуста только в зависимости от длины или пробела.
источник
Очень полезный пост, чтобы добавить поддержку NSDictionary, а также одно небольшое изменение
источник
condenseToSingleNSData(id thing)
?expandToNSArray(id thing)
? Рано или поздно вы будете спрашивать, с каким классом вы имеете дело, лучше сделать это при первом обращении.источник
stringByStrippingWhitespace
Лучший способ - использовать категорию.
Вы можете проверить следующую функцию. У которого есть все условия для проверки.
источник
Лучший способ в любом случае - проверить длину данной строки. Для этого, если ваша строка - myString, то код:
источник
источник
Проверь это :
Или
Надеюсь, это поможет.
источник
Вы можете легко проверить, пуста ли строка с этим:
источник
Я проверил пустую строку, используя код ниже:
источник
Это так же просто, как
if([myString isEqual:@""])
илиif([myString isEqualToString:@""])
источник
источник
Вы можете получить пустую строку двумя способами:
1) @ "" // Не содержит пробела
2) @ "" // Содержит пространство
Технически обе строки пусты. Мы можем написать обе вещи, просто используя одно условие
источник
Попробуйте следующее
источник
источник
str.length
выдаст исключение, еслиstr
ноль.источник