首頁  >  問答  >  主體

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

如何检测NSString在Objective-C里是否为空?

原问题:How do I test if a string is empty in Objective C?

大家讲道理大家讲道理2761 天前498

全部回覆(1)我來回復

  • 天蓬老师

    天蓬老师2017-04-21 11:20:49

    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
    }
    

    回覆
    0
  • 取消回覆