如何在Objective-C中测试NSString是否为空?


当前回答

if(str.length == 0 || [str isKindOfClass: [NSNull class]]){
    NSLog(@"String is empty");
}
else{
    NSLog(@"String is not empty");
}    

其他回答

看看这个:

if ([yourString isEqualToString:@""])
{
    NsLog(@"Blank String");
}

Or

if ([yourString length] == 0)
{
    NsLog(@"Blank String");
}

希望这能有所帮助。

试试下面的方法

NSString *stringToCheck = @"";

if ([stringToCheck isEqualToString:@""])
{
   NSLog(@"String Empty");
}
else
{
   NSLog(@"String Not Empty");
}

因此,除了检查字符串长度小于1的基本概念之外,深入考虑上下文也很重要。 人类、计算机或其他语言可能对空字符串有不同的定义,在这些相同的语言中,额外的上下文可能会进一步改变含义。

假设空字符串意味着“在当前上下文中不包含任何重要字符的字符串”。

这可能意味着在视觉上,颜色和背景颜色在带属性的字符串中是相同的。有效的空。

这可能意味着没有有意义的字符。所有的点、破折号或下划线都可能被认为是空的。 此外,空有意义的有效字符可能意味着一个字符串没有读者能理解的字符。 它们可以是定义为对读者毫无意义的语言或字符集中的字符。我们可以稍微不同地定义它,即字符串在给定语言中不构成已知单词。

我们可以说空是一个函数的负空间百分比的字形呈现。

即使是没有一般视觉表示的不可打印字符序列也不是真正的空字符。我想到了控制字符。特别是低ASCII范围(我很惊讶没有人提到这些,因为它们包含许多系统,而不是空白,因为它们通常没有字形和可视指标)。然而,字符串长度不是零。

结论。 长度本身并不是唯一的衡量标准。 上下文集成员也非常重要。

字符集隶属度是一种非常重要的常用附加度量。 有意义的序列也是相当常见的。(想想SETI、加密或验证码) 还存在其他更抽象的上下文集。

因此,在假设字符串仅根据长度或空格为空之前请仔细考虑。

斯威夫特版本

即使这是一个Objective C问题,我需要在Swift中使用NSString,所以我也会在这里包括一个答案。

let myNSString: NSString = ""

if myNSString.length == 0 {
    print("String is empty.")
}

或者NSString是可选的:

var myOptionalNSString: NSString? = nil

if myOptionalNSString == nil || myOptionalNSString!.length == 0 {
    print("String is empty.")
}

// or alternatively...
if let myString = myOptionalNSString {
    if myString.length != 0 {
        print("String is not empty.")
    }
}

正常的Swift String版本是

let myString: String = ""

if myString.isEmpty {
    print("String is empty.")
}

请参见:检查Swift中的空字符串?

另一个选项是用isEqualToString检查它是否等于@"":如下所示:

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