Как проверить, является ли строка пустой в Objective C?

Как проверить, что NSString пуст в Objective C?

28 Solutions collect form web for “Как проверить, является ли строка пустой в Objective C?”

Вы можете проверить, является ли [string length] == 0 . Это проверит, является ли это допустимой, но пустой строкой (@ ""), а также если она length нулю, так как length звонка на nil также вернет 0.

Ответ Марка правильный. Но я воспользуюсь этой возможностью, чтобы включить указатель на генерализованный isEmpty Виля Шипли, который он поделился в своем блоге :

 static inline BOOL IsEmpty(id thing) { return thing == nil || ([thing respondsToSelector:@selector(length)] && [(NSData *)thing length] == 0) || ([thing respondsToSelector:@selector(count)] && [(NSArray *)thing count] == 0); } 

Первый подход действителен, но не работает, если ваша строка имеет пробелы ( @" " ). Поэтому перед тестированием вы должны очистить эти пробелы.

Этот код очищает все пробелы с обеих сторон строки:

 [stringObject stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet] ]; 

Одна хорошая идея – создать один макрос, поэтому вам не нужно набирать эту линию монстров:

 #define allTrim( object ) [object stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet] ] 

Теперь вы можете использовать:

 NSString *emptyString = @" "; if ( [allTrim( emptyString ) length] == 0 ) NSLog(@"Is empty!"); 

Одно из лучших решений, которое я когда-либо видел (лучше, чем у Matt G's), – это улучшенная встроенная функция, которую я взял на каком-то репозитории Git Hub (Wil Shipley's one, но я не могу найти ссылку):

 // Check if the "thing" pass'd is empty static inline BOOL isEmpty(id thing) { return thing == nil || [thing isKindOfClass:[NSNull class]] || ([thing respondsToSelector:@selector(length)] && [(NSData *)thing length] == 0) || ([thing respondsToSelector:@selector(count)] && [(NSArray *)thing count] == 0); } 

Вам лучше использовать эту категорию:

 @implementation NSString (Empty) - (BOOL) empty{ return ([[self stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]length] == 0); } @end 

Я сказал:

 @implementation NSObject (AdditionalMethod) -(BOOL) isNotEmpty { return !(self == nil || [self isKindOfClass:[NSNull class]] || ([self respondsToSelector:@selector(length)] && [(NSData *)self length] == 0) || ([self respondsToSelector:@selector(count)] && [(NSArray *)self count] == 0)); }; @end 

Проблема в том, что если self nil, эта функция никогда не вызывается. Он вернет false, что желательно.

Просто передайте свою строку следующему методу:

 +(BOOL)isEmpty:(NSString *)str { if(str.length==0 || [str isKindOfClass:[NSNull class]] || [str isEqualToString:@""]||[str isEqualToString:NULL]||[str isEqualToString:@"(null)"]||str==nil || [str isEqualToString:@"<null>"]){ return YES; } return NO; } 

Другой вариант – проверить, равно ли оно @"" с isEqualToString: вот так:

 if ([myString isEqualToString:@""]) { NSLog(@"myString IS empty!"); } else { NSLog(@"myString IS NOT empty, it is: %@", myString); } 

У вас есть 2 способа проверить, является ли строка пустой или нет:

Предположим, что ваше строковое имя – NSString *strIsEmpty .

Способ 1:

 if(strIsEmpty.length==0) { //String is empty } else { //String is not empty } 

Способ 2:

 if([strIsEmpty isEqualToString:@""]) { //String is empty } else { //String is not empty } 

Выберите любой из вышеуказанных методов и узнайте, пустая строка или нет.

Просто используйте одно из условий if else как показано ниже:

Способ 1:

 if ([yourString isEqualToString:@""]) { // yourString is empty. } else { // yourString has some text on it. } 

Способ 2:

 if ([yourString length] == 0) { // Empty yourString } else { // yourString is not empty } 

Быстрая версия

Несмотря на то, что это вопрос Objective C, мне нужно было использовать NSString в Swift, поэтому я также включу здесь ответ.

 let myNSString: NSString = "" if myNSString.length == 0 { print("String is empty.") } 

Или, если NSString является необязательным:

 var myOptionalNSString: NSString? = nil if myOptionalNSString == nil || myOptionalNSString!.length == 0 { print("String is empty.") } // or alternatively... if let myString = myOptionalNSString { if myString.length != 0 { print("String is not empty.") } } 

Обычная версия Swift String

 let myString: String = "" if myString.isEmpty { print("String is empty.") } 

См. Также: Проверить пустую строку в Swift?

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

 +(BOOL) isEmptyString : (NSString *)string { if([string length] == 0 || [string isKindOfClass:[NSNull class]] || [string isEqualToString:@""]||[string isEqualToString:NULL] || string == nil) { return YES; //IF String Is An Empty String } return NO; } 

Лучшая практика заключается в том, чтобы сделать общий класс «UtilityClass» и объявить этот метод, чтобы вы могли использовать этот метод, просто назовите его через свое приложение.

Очень полезный пост, чтобы добавить поддержку NSDictionary, а также одно небольшое изменение

 static inline BOOL isEmpty(id thing) { return thing == nil || [thing isKindOfClass:[NSNull class]] || ([thing respondsToSelector:@selector(length)] && ![thing respondsToSelector:@selector(count)] && [(NSData *)thing length] == 0) || ([thing respondsToSelector:@selector(count)] && [thing count] == 0); } 

Может быть, этот ответ является дубликатом уже предоставленных ответов, но я сделал несколько изменений и изменений в порядке проверки условий. Пожалуйста, обратитесь к приведенному ниже коду:

 +(BOOL)isStringEmpty:(NSString *)str { if(str == nil || [str isKindOfClass:[NSNull class]] || str.length==0) { return YES; } return NO; } 

Просто проверьте длину строки

  if (!yourString.length) { //your code } 

сообщение NIL будет возвращать нуль или 0, поэтому нет необходимости тестировать нуль :).

Счастливое кодирование …

Он работает как прелесть для меня

Если NSString s

 if ([s isKindOfClass:[NSNull class]] || s == nil || [s isEqualToString:@""]) { NSLog(@"s is empty"); } else { NSLog(@"s containing %@", s); } 

Поэтому, помимо основной концепции проверки длины строки менее 1, важно глубоко рассмотреть контекст. Языки человека или компьютер или другие могут иметь разные определения пустых строк и на тех же языках, дополнительный контекст может дополнительно изменить смысл.

Скажем, пустая строка означает «строка, которая не содержит символов, значимых в текущем контексте».

Это может означать визуально, так как цвет и цвет фона одинаковы в атрибутной строке. Эффективно пуст.

Это может означать отсутствие значимых символов. Все точки или все тире или все подчеркивания могут считаться пустыми. Кроме того, пустые значащие значащие символы могут означать строку, которая не имеет символов, которые понимает читатель. Они могут быть символами на языке или characterSet, которые для читателя не имеют смысла. Мы могли бы определить это несколько иначе, чтобы сказать, что строка не содержит известных слов на данном языке.

Можно сказать, что пустая функция зависит от процента отрицательного пространства в отображаемых глифах.

Даже последовательность непечатаемых символов без общего визуального представления не является действительно пустым. Управляющие символы приходят на ум. Особенно низкий диапазон ASCII (я удивлен, что никто не упоминал об этом, поскольку они шлепают множество систем и не являются пробелами, поскольку у них обычно нет глифов и нет визуальных показателей). Но длина строки не равна нулю.

Вывод. Здесь не единственная мера. Членство в контекстном наборе также очень важно.

Назначение набора символов – очень важная общая дополнительная мера. Значимые последовательности также довольно распространенные. (думаю, SETI или крипто или капча). Также существуют дополнительные абстрактные контекстные множества.

Поэтому тщательно подумайте, прежде чем считать, что строка пуста по длине или пробелу.

 - (BOOL)isEmpty:(NSString *)string{ if ((NSNull *) string == [NSNull null]) { return YES; } if (string == nil) { return YES; } if ([string length] == 0) { return YES; } if ([[string stringByTrimmingCharactersInSet: [NSCharacterSet whitespaceAndNewlineCharacterSet]] length] == 0) { return YES; } if([[string stringByStrippingWhitespace] isEqualToString:@""]){ return YES; } return NO; } 

Лучше всего использовать категорию.
Вы можете проверить следующую функцию. У кого есть все условия для проверки.

 -(BOOL)isNullString:(NSString *)aStr{ if([(NSNull *)aStr isKindOfClass:[NSNull class]]){ return YES; } if ((NSNull *)aStr == [NSNull null]) { return YES; } if ([aStr isKindOfClass:[NSNull class]]){ return YES; } if(![[aStr stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]] length]){ return YES; } return NO; } 

Лучший способ в любом случае – проверить длину данной строки. Для этого, если ваша строка – myString, тогда код:

  int len = [myString length]; if(len == 0){ NSLog(@"String is empty"); } else{ NSLog(@"String is : %@", myString); } 
 if (string.length == 0) stringIsEmpty; 

Проверь это :

 if ([yourString isEqualToString:@""]) { NsLog(@"Blank String"); } 

Или

 if ([yourString length] == 0) { NsLog(@"Blank String"); } 

Надеюсь, это поможет.

Вы можете легко проверить, является ли строка пустой:

 if ([yourstring isEqualToString:@""]) { // execute your action here if string is empty } 

Я проверил пустую строку, используя следующий код:

 //Check if we have any search terms in the search dictionary. if( (strMyString.text==(id) [NSNull null] || [strMyString.text length]==0 || strMyString.text isEqual:@"")) { [AlertView showAlert:@"Please enter a valid string"]; } 

Это так просто, как if([myString isEqual:@""]) или if([myString isEqualToString:@""])

 //Different validations: NSString * inputStr = @"Hey "; //Check length [inputStr length] //Coming from server, check if its NSNull [inputStr isEqual:[NSNull null]] ? nil : inputStr //For validation in allowed character set -(BOOL)validateString:(NSString*)inputStr { BOOL isValid = NO; if(!([inputStr length]>0)) { return isValid; } NSMutableCharacterSet *allowedSet = [NSMutableCharacterSet characterSetWithCharactersInString:@".-"]; [allowedSet formUnionWithCharacterSet:[NSCharacterSet decimalDigitCharacterSet]]; if ([inputStr rangeOfCharacterFromSet:[allowedSet invertedSet]].location == NSNotFound) { // contains only decimal set and '-' and '.' } else { // invalid isValid = NO; } return isValid; } 
 if(str.length == 0 || [str isKindOfClass: [NSNull class]]){ NSLog(@"String is empty"); } else{ NSLog(@"String is not empty"); } 
 if( [txtMobile.text length] == 0 ) { [Utility showAlertWithTitleAndMessage: AMLocalizedString(@"Invalid Mobile No",nil) message: AMLocalizedString(@"Enter valid Mobile Number",nil)]; } 
  • как перемещаться в одном направлении в UIScrollView при прокрутке
  • Закрытие текстового поля при вставке нескольких символов
  • Самый быстрый способ проверить, содержит ли массив те же объекты другого массива
  • Доступ к атрибутам пользовательских ячеек вне cellForRowAtIndexPath
  • Что означает ошибка «Не удалось скомпилировать соединение:»?
  • Изменение цвета фона в UIView
  • NSArrayM insertObject: atIndex:]: объект не может быть nil '
  • Почему автозаполнение Xcode предлагает файлы .m при импорте?
  • Не удалось опубликовать tumblr от iOS OAuth1.0, клиент OAConsumer
  • В моем приложении AppDelegate нет управляемых объектов ObjectContext
  • Как создать пользовательский UIBarButtonItem с изображением и ярлыком?
  • Interesting Posts

    WatchOS2 Watch Connectivity по-прежнему требует наличия групп приложений в возможностях?

    воспроизводить видео в формате .mp4 или .mov с URL-адреса Интернета или локального файла в iOS?

    iOS 9 CollectionView замедляет работу

    Уведомления Firebase не отображают IOS, но сообщение отображается на консоли

    Как работает TestFlight?

    Как вы можете направить пользователя, чтобы добавить свою учетную запись Twitter в настройки Twitter, используя функцию Twitter.framework?

    UITabBar selectionIndicatorImage с 3 барами, создающими нежелательное дополнение

    Приложение ios 6, открывающее приложение непосредственно из почты в виде ссылок на YouTube

    Как записать битную маску

    Столбцы tableView в конечном итоге имеют более 16 элементов

    UIViewController – проблема с пользовательским отключением перехода

    Загружать файл в расширение «Сегодня», когда устройство заблокировано

    Комбинировать ios (Push-уведомление) и андроид (GCM) API (webservice) для уведомления

    Атрибут CKReference .DeleteSelf не влияет

    Поиск лучшего способа скрыть панель поиска в верхней части окна

    PhoneC: Разработка iOS проста с помощью XCode, Swift3, UITableView, cocatouch, давайте создадим приложения для iPhone, iPad и Macbook.