2010-05-09 84 views
9

確定NSString是否爲空的最好方法是什麼?現在,我使用下列內容:如何確定NSString是否爲空

if (string == nil || [string isEqualToString:@""]) { // do something }

感謝您的任何意見。

回答

24
if ([string length] == 0) { 
    // do something 
} 

如果字符串爲nil,則該消息nil將返回零,一切仍然會很好。

+0

+1爲您的答案。空白怎麼樣?如果你不想數它們呢?任何方便的方式? – cocoafan 2012-11-27 10:39:43

+1

@cocoafan不簡明。如果你需要經常這樣做,我會建議在'NSString'中加入一個類別,比如'isNotEmpty',你可以進行自定義檢查。然後你可以'if([string isNotEmpty]){... }'它也會正確地處理'nil's ... – 2012-11-27 16:31:28

+0

您可能仍然想知道爲什麼返回的長度爲0,所以在獲得零之後有時可能會檢查零。 – uchuugaka 2013-06-07 00:01:20

0

不好解決

[nil length]0

(0==0)1

然後([string length] == 0)1。雖然這是錯誤的。

最好的辦法是

if (![string length]) { 

} 
+2

長度是NUMBER,應該用== 0檢查。if(![string length])是一個c hack,並且(語義上)不正確,因爲!應該用於布爾值。請不要說它仍然有效。我知道。這只不過是一種漢語。 – cocoafan 2012-11-27 10:37:42

+2

這個答案是錯誤的。 !0也是1,就像0 == 0一樣。結果是一樣的,唯一可以在這裏討論的是風格問題 – Sven 2013-06-06 22:19:05

2

這不僅會檢查是否有任何字符串中也將返回false,如果它僅僅是空白。

NSString *tempString = [myString stringByReplacingOccurrencesOfString:@" " withString:@""]; 


if ([tempString length] != 0) { 
    //There is something in the string. 
} else { 
    //There is nothing or it is just whitespace. 
} 
+0

這隻能刪除前導空白和尾隨空白 – uchuugaka 2013-06-07 00:04:57

+0

你知道嗎,再右吧。我做了很多實驗,並且必須複製並粘貼錯誤的代碼。它被糾正了。這樣更有效率。 – 2013-06-14 20:23:49

+1

無論它可能是什麼,'-stringByReplacingOccurrencesOfString:withString:'不是特別有效。更好地測試你實際尋找的是什麼:非空白字符。 '!myString || [myString rangeOfCharacterFromSet:[[NSCharacterSet whitespaceCharacterSet] invertedSet] .location == NSNotFound'(在這種情況下,您必須明確測試'myString'是否爲'nil',因爲消息'nil'產生的'NSRange'不會有在'location'字段中有'NSNotFound'。) – 2013-06-15 01:42:25