您的位置:首页 > 其它

如何检测字符串在Obj-C里是否为空?

2015-06-23 16:54 323 查看
Marc Charbonneau

可以检查是否[string length] == 0。这将检查它是否是一个有效但是为空的字符串(@"")以及其是否为无值。因为调用无值的length也将返回0。

Matt G

楼上的回答是正确的。但是我想借此机会介绍一下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);
}


第一种方法是有效地,但是如果字符串有空格(@" ")的话就买不起作用了。所以必须在测试前清除空格。

下面的代码能够清除字符串两边的所有空格
[stringObject stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet] ];


有个不错的方法是定义一个宏,这样你就不用输入这一长串代码了:
#define allTrim( object ) [object stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet] ]


现在你可以使用:
NSString *emptyString = @"   ";
if ( [allTrim( emptyString ) length] == 0 ) NSLog(@"Is empty!");


Rob

我见过的最好的解决方法之一(比Matt G的更好)这种改进的内联函数,我在Git Hub报告里找到的:
// 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);
}


user238824

你最好使用这个函数:
@implementation NSString (Empty)

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

@end


chown

另一个选择是使用isEqualToString检查是否等于@"",就像这样:
if ([myString isEqualToString:@""]) {
NSLog(@"myString IS empty!");
} else {
NSLog(@"myString IS NOT empty, it is: %@", myString);
}


Jim Thio

我用的这个:
@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无值, 这个功能就永远不会被调用。它将返回false,这是所需的。

Samir Jwarchan

使用下面的if else条件之一就可以:

方法1:
<strong>if([yourString isEqualToString:@""]){
// yourString is empty.
}
else {
// yourString has some text on it.
} </strong>


方法 2:
if([yourString length] == 0){
// Empty yourString
}
else {
// yourString is not empty
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: