標籤: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裡是否為空白?