Answers:
现在具有使用以下命令检测空字符串的内置功能.isEmpty
:
if emptyString.isEmpty {
print("Nothing to see here")
}
Apple发行前文档:“字符串和字符”。
一种检查字符串是否为nil或为空的简洁方法是:
var myString: String? = nil
if (myString ?? "").isEmpty {
print("String is nil or empty")
}
if let myString = myString where !myString.isEmpty { ... }
我完全重写了我的答案(再次)。这次是因为我成为guard
声明的粉丝和早日归来。它使代码更简洁。
检查零长度。
let myString: String = ""
if myString.isEmpty {
print("String is empty.")
return // or break, continue, throw
}
// myString is not empty (if this point is reached)
print(myString)
如果该if
语句通过,则可以知道该字符串不为空,从而可以安全地使用该字符串。如果为空,则该函数将尽早返回,而在此之后不再重要。
检查零长度或零长度。
let myOptionalString: String? = nil
guard let myString = myOptionalString, !myString.isEmpty else {
print("String is nil or empty.")
return // or break, continue, throw
}
// myString is neither nil nor empty (if this point is reached)
print(myString)
这将取消包装可选内容,并同时检查它是否为空。传递guard
语句后,您可以安全地使用未包装的非空字符串。
用
var isEmpty: Bool { get }
例
let lang = "Swift 5"
if lang.isEmpty {
print("Empty string")
}
如果要忽略空格
if lang.trimmingCharacters(in: .whitespaces).isEmpty {
print("Empty string")
}
这是我检查字符串是否为空的方法。“空白”是指为空或仅包含空格/换行符的字符串。
struct MyString {
static func blank(text: String) -> Bool {
let trimmed = text.trimmingCharacters(in: CharacterSet.whitespacesAndNewlines)
return trimmed.isEmpty
}
}
如何使用:
MyString.blank(" ") // true
您还可以使用可选的扩展名,因此您不必担心展开或使用== true
:
extension String {
var isBlank: Bool {
return self.trimmingCharacters(in: .whitespacesAndNewlines).isEmpty
}
}
extension Optional where Wrapped == String {
var isBlank: Bool {
if let unwrapped = self {
return unwrapped.isBlank
} else {
return true
}
}
}
注意:在选配项上调用此?
函数时,请确保不要使用它,否则仍需要展开。
optionalString?isBlank
它时仍会收到编译时错误,因此需要将其解包。
currentIncident.priority?.description.isBlank
。说:Value of optional type 'Bool?' not unwrapped; did you mean to use '!' or '?'?
。我必须这样做(currentIncident.priority?.description ?? "").isBlank
,使扩展有点毫无意义。斯威夫特4.1。
priority
那里是可选的。如果只是description
可选的,它将起作用,但是您不能像这样使父对象成为可选对象(因为如果priority
为nil,那么它甚至没有description
属性来检查空白)。
如果字符串==“”,isEmpty将按照您的预期进行操作,它将返回true。其他一些答案则指向您有可选字符串的情况。
请使用可选链接!
如果字符串不是nil,则将使用isEmpty,否则将不使用。
下面,将不会设置optionalString,因为字符串为nil
let optionalString: String? = nil
if optionalString?.isEmpty == true {
optionalString = "Lorem ipsum dolor sit amet"
}
显然,您不会使用上面的代码。这些好处来自于JSON解析或其他您没有值的情况。如果有值,这保证代码将运行。
关于什么
if let notEmptyString = optionalString where !notEmptyString.isEmpty {
// do something with emptyString
NSLog("Non-empty string is %@", notEmptyString)
} else {
// empty or nil string
NSLog("Empty or nil string")
}