84669 Lernen von Personen
152542 Lernen von Personen
20005 Lernen von Personen
5487 Lernen von Personen
7821 Lernen von Personen
359900 Lernen von Personen
3350 Lernen von Personen
180660 Lernen von Personen
48569 Lernen von Personen
18603 Lernen von Personen
40936 Lernen von Personen
1549 Lernen von Personen
1183 Lernen von Personen
32909 Lernen von Personen
如何检测NSString在Objective-C里是否为空?
原问题:How do I test if a string is empty in Objective C?
光阴似箭催人老,日月如移越少年。
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 }
Marc Charbonneau
可以检查是否[string length] == 0。这将检查它是否是一个有效但是为空的字符串(@"")以及其是否为无值。因为调用无值的length也将返回0。
Matt G
楼上的回答是正确的。但是我想借此机会介绍一下Wil Shipley总结的isEmpty,他分享在blog上的:
第一种方法是有效地,但是如果字符串有空格(@" ")的话就买不起作用了。所以必须在测试前清除空格。
下面的代码能够清除字符串两边的所有空格
有个不错的方法是定义一个宏,这样你就不用输入这一长串代码了:
现在你可以使用:
Rob
我见过的最好的解决方法之一(比Matt G的更好)这种改进的内联函数,我在Git Hub报告里找到的:
user238824
你最好使用这个函数:
chown
另一个选择是使用isEqualToString检查是否等于@"",就像这样:
Jim Thio
我用的这个:
问题是如果self无值, 这个功能就永远不会被调用。它将返回false,这是所需的。
Samir Jwarchan
使用下面的if else条件之一就可以:
方法1:
方法 2: