协慌网

登录 贡献 社区

如何测试 Objective-C 中的字符串是否为空?

如何测试 Objective-C 中NSString

答案

您可以检查[string length] == 0 。这将检查它是否是有效但为空的字符串(@“”)以及是否为 nil,因为length也会返回 0。

马克的答案是正确的。但是,我将借此机会包括一个指向 Wil Shipley 广义化的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!");