如何檢測字串在Obj-C裡是否為空白?

來源:互聯網
上載者:User

標籤:blog   http   io   os   ar   使用   strong   sp   div   

本文選自StackOverflow(簡稱:SOF)精選問答匯總系列文章之一,本系列文章將為讀者分享國外最優質的精彩問答,供讀者學習和瞭解國外最新技術。本文將為讀者講解如何檢測字串在Objective-C裡是否為空白。

問題:

Jamey McElveen

如何檢測NSString在Objective-C裡是否為空白?

答案:

Marc Charbonneau

可以檢查是否[string length] == 0。這將檢查它是否是一個有效但是為空白的字串(@"")以及其是否為無值。因為調用無值的length也將返回0。

Matt G

樓上的回答是正確的。但是我想藉此機會介紹一下Wil Shipley總結的isEmpty,他分享在blog上的:

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

第一種方法是有效地,但是如果字串有空格(@" ")的話就買不起作用了。所以必須在測試前清除空格。

下面的代碼能夠清除字串兩邊的所有空格

1 [stringObject stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet] ];

有個不錯的方法是定義一個宏,這樣你就不用輸入這一長串代碼了:

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

現在你可以使用:

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

我見過的最好的解決方案之一(比Matt G的更好)這種改進的內嵌函式,我在Git Hub報告裡找到的:

123456789 // Check if the "thing" pass‘d is emptystatic 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

你最好使用這個函數:

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

chown 

另一個選擇是使用isEqualToString檢查是否等於@"",就像這樣:

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

我用的這個:

123456789101112 @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:

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

方法 2:

123456 if([yourString length] == 0){    // Empty yourString}else {    // yourString is not empty}

原文連結:stackoverflow

文章選自StackOverFlow社區,鑒於其內容對於開發人員有所協助,現將文章翻譯於此,供大家參考及學習。9Tech將每日持續更新,讀者可點擊StackOverflow(簡稱:SOF)精選問答匯總,查看全部譯文內容。同時,我們也招募志同道合的技術朋友共同翻譯,造福大家!報名請發郵件至zhangqi_wj#cyou-inc.com。(#換成@)

 

如何檢測字串在Obj-C裡是否為空白?

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.