2010-05-09 55 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