如何testingObjective C中的string是否为空?

如何testingObjective C中的NSString是否为空?

你可以检查是否[string length] == 0 。 这将检查它是否是一个有效的空string(@“”)以及是否为零,因为在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); } 

第一种方法是有效的,但是如果你的string有空格( @" " )则不起作用。 所以你必须在testing之前清除这个空白区域。

此代码清除string两边的所有空格:

 [stringObject stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet] ]; 

一个好主意是创build一个macros,所以你不必input这个怪物线:

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

现在你可以使用:

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

我见过的最好的解决scheme之一(比马特G的更好)是我在一些Git Hub回购(Wil Shipley的回购,但我找不到链接)中改进的内联函数:

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

你应该更好地使用这个类别:

 @implementation NSString (Empty) - (BOOL) empty{ return ([[self stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]length] == 0); } @end 

我把这个:

 @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 

问题是,如果自己是零,这个function永远不会被调用。 它会返回false,这是所需的。

只要把你的string传给下面的方法:

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

另一个select是检查它是否等于@""isEqualToString:像这样:

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

你有两种方法来检查string是否为空:

假设您的string名称是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 } 

select上述任何一种方法,并知道string是否为空。

只要使用其中一个条件,如下所示:

方法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 } 

Swift版本

即使这是一个Objective C的问题,我需要在Swift中使用NSString ,所以我也会在这里包含一个答案。

 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中的空string?

你可以检查你的string是否为空或不使用此方法:

 +(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并且使用这个方法,这样你就可以通过在应用程序中调用它来使用这个方法。

非常有用的文章,添加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); } 

可能是这个答案是已经给出的答案的副本,但我没有做一些修改和检查条件的顺序的变化。 请参考下面的代码:

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

简单检查你的string长度

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

给NIL的消息将返回零或0,所以不需要testing零:)。

快乐编码…

它是为我的魅力工作

如果NSStrings

 if ([s isKindOfClass:[NSNull class]] || s == nil || [s isEqualToString:@""]) { NSLog(@"s is empty"); } else { NSLog(@"s containing %@", s); } 

因此,除了检查string长度小于1的基本概念之外,深入考虑上下文很重要。 语言人类或计算机或其他可能有不同的空string的定义,并在这些相同的语言,额外的上下文可能会进一步改变意义。

假设空string表示“在当前上下文中不包含任何重要字符的string”。

这可能意味着视觉上,因为在颜色和背景颜色相同的属性string。 有效地清空。

这可能意味着空的有意义的人物。 所有点或所有破折号或所有下划线可能被认为是空的。 而且,清除有意义的重要字符可能意味着没有读者理解的字符的string。 他们可能是一个语言或字符集的字符集定义为读者毫无意义。 我们可以定义它有点不同,说string形成给定的语言没有已知的单词。

我们可以说空白是呈现的字形中负空间的百分比的函数。

即使是没有一般视觉performance的不可打印字符序列也不是真正的空白。 控制字符浮现在脑海中。 特别是低的ASCII范围(我很惊讶没有人提到这些,因为他们软pipe很多系统,而不是空格,因为他们通常没有字形和没有视觉指标)。 然而,string长度不是零。

结论。 长度本身并不是唯一的措施。 上下文集合成员资格也非常重要。

字符集成员是一个非常重要的常见附加措施。 有意义的序列也是一个相当普遍的序列。 (认为​​SETI或encryption或validation码)另外还有更多的抽象上下文集。

所以在设想一个string只是基于长度或空白的空白之前仔细想一想。

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

最好的方法是使用该类别。
您可以检查以下function。 其中有所有的条件来检查。

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

在任何情况下,最好的办法是检查给定的string的长度。如果你的string是myString,那么代码是:

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

检查这个:

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

要么

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

希望这会有所帮助。

你可以很容易地检查string是否为空:

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

我使用下面的代码检查了一个空string:

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

它就像if([myString isEqual:@""])if([myString isEqualToString:@""])

 //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; } 
 if(str.length == 0 || [str isKindOfClass: [NSNull class]]){ NSLog(@"String is empty"); } else{ NSLog(@"String is not empty"); } 
 if( [txtMobile.text length] == 0 ) { [Utility showAlertWithTitleAndMessage: AMLocalizedString(@"Invalid Mobile No",nil) message: AMLocalizedString(@"Enter valid Mobile Number",nil)]; }