在Swift中有没有一种方法可以检查字符串是否为 nil
和 ""
? 在Rails中,我可以使用 blank()
进行检查。
我目前有这个,但似乎过于复杂:
if stringA? != nil {
if !stringA!.isEmpty {
...blah blah
}
}
在Swift中有没有一种方法可以检查字符串是否为 nil
和 ""
? 在Rails中,我可以使用 blank()
进行检查。
我目前有这个,但似乎过于复杂:
if stringA? != nil {
if !stringA!.isEmpty {
...blah blah
}
}
Swift 3 中检查空字符串的最佳方法
if !string.isEmpty{
// do stuff
}
if !(string?.isEmpty ?? true) { // 不是 nil 也不是空字符串 }
Nil 合并运算符检查可选项是否为非 nil。如果它不是 nil,则检查其属性,例如在此示例中检查 isEmpty。因为该可选项可能是 nil,所以你提供了一个默认值,当可选项为 nil 时将使用该默认值。Swift 3解决方案 使用可选的解包值并检查布尔值。
if (string?.isempty == true) {
// Perform action
}
根据这篇Medium文章,稍作修改适用于Swift 5,我得到了下面这段代码。
if let stringA, !stringA.isEmpty {
...blah blah
}
虽然我理解创建扩展的好处,但我认为对于只需要一个小组件/包的人可能会有所帮助。
func isBlank (optionalString :String?) -> Bool {
if let string = optionalString {
return string.isEmpty
} else {
return true
}
}
var optionalString :String? = nil
if isBlank(optionalString) {
println("here")
}
else {
println("there")
}
Swift 3 这个方法很好地检查字符串是否为空。因为当字符串中有空格时,isEmpty会返回true。
extension String {
func isEmptyAndContainsNoWhitespace() -> Bool {
guard self.isEmpty, self.trimmingCharacters(in: .whitespaces).isEmpty
else {
return false
}
return true
}
}
例子:
let myString = "My String"
myString.isEmptyAndContainsNoWhitespace() // returns false
let myString = ""
myString.isEmptyAndContainsNoWhitespace() // returns true
let myString = " "
myString.isEmptyAndContainsNoWhitespace() // returns false
Swift 5.6 - Xcode 13
extension Optional where Wrapped: Collection {
var isEmptyOrNil: Bool {
guard let self = self else { return true }
return self.isEmpty
}
}
使用方法:
var name: String?
if name.isEmptyOrNil {
///true
}
name = "John Peter"
guard !name.isEmptyOrNil else { return }
/// Name is not empty
self?.isEmpty ?? true;
。 - Ayxan Haqverdiliextension String
{ // returns false if passed string is nil or empty
static func isNilOrEmpty(_ string:String?) -> Bool
{ if string == nil { return true }
return string!.isEmpty
}
}// extension: String
return string!.trimmingCharacters(in: CharacterSet.whitespaces).isEmpty
用法如下...
if String.isNilOrEmpty("hello world") == true
{ print("it's a string!")
}
Collection
协议的类型的通用解决方案,其中包括 String
:extension Optional where Wrapped: Collection {
var isNilOrEmpty: Bool {
self?.isEmpty ?? true
}
}
"Hello".isEmpty // false
"".isEmpty // true
extension String {
var isBlank: Bool {
return allSatisfy({ $0.isWhitespace })
}
}
"Hello".isBlank // false
"".isBlank // true
extension Optional where Wrapped == String {
var isBlank: Bool {
return self?.isBlank ?? true
}
}
var title: String? = nil
title.isBlank // true
title = ""
title.isBlank // true