NSString为空

Yaz*_*zmi 36 string iphone objective-c nsstring ios

如何测试NSString是否为空?或所有空格或零?用一个方法调用?

Jac*_*kin 96

你可以尝试这样的事情:

@implementation NSString (JRAdditions)

+ (BOOL)isStringEmpty:(NSString *)string {
   if([string length] == 0) { //string is empty or nil
       return YES;
   } 

   if(![[string stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]] length]) {
       //string is all whitespace
       return YES;
   }

   return NO;
}

@end
Run Code Online (Sandbox Code Playgroud)

查看NSStringADC 的参考资料.

  • @JacobRelkin,我不认为这很正确.如果字符串为nil,则该方法永远不会被调用,所以如果你有:`NSString*str = nil; BOOL isStrEmpty = [str isEmpty];`,那么`isStrEmpty`将是`NO`,如`nil`与"NO"相同.我已经使用了这样的类别一段时间了,我以前没想过这个让我感到困惑,所以我可能/可能是错的. (11认同)
  • 我不久前犯了同样的错误.更简单的解决方案(至少对我来说)是反转方法的逻辑并将其重命名为`isNotEmpty`.我赞成使用肯定命名而非否定的方法,但在这种情况下......哦,我认为我懒得改变每一种用法. (3认同)
  • 你也可以把它变成类类别方法而不是实例类别方法 - 这样就可以检查nil了.+(BOOL)isEmptyString:(NSString*)string - [NSString isEmptyString:str] (2认同)
  • 或者你可以创建一个方法`isPopulated`而不是`isEmpty` (2认同)

sco*_*133 14

这是我使用的,NSString的扩展:

+ (BOOL)isEmptyString:(NSString *)string;
// Returns YES if the string is nil or equal to @""
{
    // Note that [string length] == 0 can be false when [string isEqualToString:@""] is true, because these are Unicode strings.

    if (((NSNull *) string == [NSNull null]) || (string == nil) ) {
        return YES;
    }
    string = [string stringByTrimmingCharactersInSet: [NSCharacterSet whitespaceAndNewlineCharacterSet]];

    if ([string isEqualToString:@""]) {
        return YES;
    }

    return NO;  
}
Run Code Online (Sandbox Code Playgroud)

  • 而不是与@""进行最终比较,你应该看看[string length] == 0 (5认同)

kar*_*rim 7

我用,

+ (BOOL ) stringIsEmpty:(NSString *) aString {

    if ((NSNull *) aString == [NSNull null]) {
        return YES;
    }

    if (aString == nil) {
        return YES;
    } else if ([aString length] == 0) {
        return YES;
    } else {
        aString = [aString stringByTrimmingCharactersInSet: [NSCharacterSet whitespaceAndNewlineCharacterSet]];
        if ([aString length] == 0) {
            return YES;
        }
    }

    return NO;  
}

+ (BOOL ) stringIsEmpty:(NSString *) aString shouldCleanWhiteSpace:(BOOL)cleanWhileSpace {

    if ((NSNull *) aString == [NSNull null]) {
        return YES;
    }

    if (aString == nil) {
        return YES;
    } else if ([aString length] == 0) {
        return YES;
    } 

    if (cleanWhileSpace) {
        aString = [aString stringByTrimmingCharactersInSet: [NSCharacterSet whitespaceAndNewlineCharacterSet]];
        if ([aString length] == 0) {
            return YES;
        }
    }

    return NO;  
}
Run Code Online (Sandbox Code Playgroud)