如何在Objective-C中测试NSString是否为空?


当前回答

看看这个:

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

Or

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

希望这能有所帮助。

其他回答

可能这个答案是已经给出的答案的副本,但我在检查条件的顺序上做了一些修改和更改。请参考以下代码:

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

第一种方法是有效的,但如果字符串中有空格(@" ")则无效。所以在测试之前必须清除这些空白。

这段代码清除了字符串两边的所有空格:

[stringObject stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet] ];

一个好主意是创建一个宏,这样你就不必输入这一行怪物:

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

现在你可以使用:

NSString *emptyString = @"   ";

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

基于多个答案,我创建了一个可以使用的类别,结合@iDevAmit和@user238824答案。

具体来说,它是按照以下顺序进行的

检查null/nil 检查if字符串是否为空使用它的长度计数。 检查字符串是否为空白。

//
//  NSString+Empty.h

#import <Foundation/Foundation.h>

NS_ASSUME_NONNULL_BEGIN

@interface NSString (Empty)
- (BOOL)isEmptyOrWhiteSpacesOrNil;
@end

NS_ASSUME_NONNULL_END

实现

//
//  NSString+Empty.m

#import "NSString+Empty.h"

@implementation NSString (Empty)

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

- (BOOL)isEmptyOrWhiteSpacesOrNil {
     if(self == nil || [self isKindOfClass:[NSNull class]] || self.length==0 || [self isWhitespace] == YES) {
            return YES;
       }
      return NO;
  }

@end

/*
 Credits
 1. https://stackoverflow.com/a/24506942/7551807
 2. https://stackoverflow.com/a/1963273/7551807
 */

用法: 当然,如果字符串为空,函数将永远不会被触发。第一种情况是为了增加安全保障。我建议在尝试使用此方法之前检查可空性。

if (myString) {
  if [myString isEmptyOrWhiteSpacesOrNil] {
     // String is empty
  }
} else {
// String is null
}

看看这个:

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

Or

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

希望这能有所帮助。

空字符串有两种方式:

1) @"" //不包含空格

2) @" " //包含空格

严格来说,这两个字符串都是空的。我们可以用条件一来写出这两个式子

if ([firstNameTF.text stringByReplacingOccurrencesOfString:@" " withString:@""].length==0)
{
    NSLog(@"Empty String");
}
else
{
    NSLog(@"String contains some value");
}