使用“if”条件语句检查多个字符串是否为空或为nil

3

在Swift中,如何使用正确的语法在if语句中链接多个条件,例如:

if (string1!=nil && string2!=nil) {}

或者:

if (string1.isEmpty && string2.isEmpty) {}

仅返回翻译后的文本:首先,根据我的观点,这是正确的 - Memon Irshad
请务必在条件语句周围留有空格:string1 != nil,不是 string!=nil - vacawama
2个回答

6

两个条件之间无需使用()

let name1 = "Jim"
let name2 = "Jules"

if name1.isEmpty && name2.isEmpty {
    println("Both strings where empty")
}

此外,检查字符串是否为nil并不等同于检查字符串是否为空。

要检查字符串是否为nil,首先它们必须是可选类型。

var name1: String? = "Jim"
var name2: String? = "Jules"

if name1 != nil && name2 != nil {
    println("Strings are not nil")
}

同时还需要安全打开:

if let firstName = name1, secondName = name2 {
    println("\(firstName) and \(secondName) are not nil")
}

在这种情况下,两个字符串都不为nil但仍可能为空,因此您也可以检查这一点:
if let firstName = name1, secondName = name2 where !firstName.isEmpty && !secondName.isEmpty {
    println("\(firstName) and \(secondName) are not nil and not empty either")
}

0

在 Swift 中,检查 nil 和检查字符串内容是不同的。

NSString 类有一个 length 方法,它将返回字符串的长度。

Swift 中的粗略等效物是 count() 函数。(对于带有重音的字母等东西,其行为不同,但现在先忽略它)

如果您想要一个表达式,如果 String 可选项为 nil 或包含空字符串则返回 0,请使用以下代码:

var aString: String?

println(count(aString ?? ""))

aString = "woof"

println(count(aString ?? ""))

代码 count(stringOptional ?? "") 如果可选项为nil或包含空字符串,则返回0。

?? 双引号被称为 "nil coalescing operator"。如果第一个部分为nil,它将用第二个部分替换表达式的第一个部分。它相当于:

string1 == nil ? "" : string1

你可以使用相同的结构与 isEmpty:

(string1 ?? "").isEmpty

因此,你的if语句最好写成:

if (string1 ?? "").isEmpty && (string2 ?? "").isEmpty 
{
  println("Both strings are empty")
}

请注意,仅当string1和string2声明为可选项时才需要上述操作:
var string1: String?

如果它们被声明为必需的字符串对象:

var string1: String

你不需要上面显示的可选语法,否则它将无法编译。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接