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

Как проверить, если в Objective C? < <20 > пусто?

Ответ 1

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

Ответ 2

Ответ Marc правильный. Но я воспользуюсь возможностью, чтобы включить указатель на Wil Shipley, обобщенный isEmpty, который он поделился с его blog:

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);
}

Ответ 3

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

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

[stringObject stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet] ];

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

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

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

NSString *emptyString = @"   ";

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

Ответ 4

Одно из лучших решений, которое я когда-либо видел (лучше, чем у Matt G one), - это улучшенная встроенная функция, которую я взял на каком-то Git Hub repo (Wil Shipley 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);
}

Ответ 5

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

@implementation NSString (Empty)

    - (BOOL) empty{
        return ([[self stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]length] == 0);
    }

@end

Ответ 6

Я положил это:

@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, что желательно.

Ответ 7

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

+(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;
}

Ответ 8

Другая опция - проверить, равно ли она @"" с isEqualToString: следующим образом:

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

Ответ 9

Просто используйте один из условий 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
}

Ответ 10

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

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

Ответ 11

У вас есть 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
}

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

Ответ 12

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

Хотя это вопрос 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?

Ответ 13

Очень полезная почта, чтобы добавить поддержку 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);
}

Ответ 14

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

+(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, и объявления этого метода, чтобы вы могли использовать этот метод, просто назовите его через свое приложение.

Ответ 15

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

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

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

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

Ответ 16

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

Если NSString - s

if ([s isKindOfClass:[NSNull class]] || s == nil || [s isEqualToString:@""]) {

    NSLog(@"s is empty");

} else {

    NSLog(@"s containing %@", s);

}

Ответ 17

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

Пусть говорят, что пустая строка означает "строка, которая не содержит символов, значимых в текущем контексте".

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

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

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

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

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

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

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

Ответ 18

- (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;
}

Ответ 19

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

-(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;
    }

Ответ 20

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

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

Ответ 21

if (string.length == 0) stringIsEmpty;

Ответ 22

проверьте это:

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

или

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

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

Ответ 23

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

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

Ответ 24

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

//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"];  
}

Ответ 25

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

Ответ 26

//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;
}

Ответ 27

if(str.length == 0 || [str isKindOfClass: [NSNull class]]){
    NSLog(@"String is empty");
}
else{
    NSLog(@"String is not empty");
}    

Ответ 28

if( [txtMobile.text length] == 0 )
{
    [Utility showAlertWithTitleAndMessage: AMLocalizedString(@"Invalid Mobile No",nil) message: AMLocalizedString(@"Enter valid Mobile Number",nil)];
}