检查Swift中的空string?
在Objective C中,可以执行以下操作来检查string:
if ([myString isEqualToString:@""]) { NSLog(@"myString IS empty!"); } else { NSLog(@"myString IS NOT empty, it is: %@", myString); }
如何检测Swift中的空string?
现在有内置的能力来检测空string.isEmpty
:
if emptyString.isEmpty { print("Nothing to see here") }
苹果预发布文档: “string和字符” 。
检查string是否为空的简明方法是:
var myString: String? = nil if (myString ?? "").isEmpty { print("String is nil or empty") }
我正在完全重写我的答案( 再次 )。 这一次是因为我已经成为guard
声明和早日归来的粉丝。 它使得代码更简洁。
非可选string
检查零长度。
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
语句通过,那么你可以安全地使用string知道它不是空的。 如果它是空的,那么该函数将返回提前,没有什么事情之后。
可选string
检查无或零长度。
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
声明之后,您可以安全地使用解包的非空string。
这是我如何检查string是空白的。 “空白”是指一个空的string,或者只包含空格/换行符。
struct MyString { static func blank(text: String) -> Bool { let trimmed = text.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceAndNewlineCharacterSet()) return trimmed.isEmpty } }
如何使用:
MyString.blank(" ") // true
要同时做零检查和长度Swift 2.0和iOS 9以上,你可以使用
if(yourString?.characters.count > 0){}
在迅速4.0
使用
var isEmpty: Bool { get }
例
let lang = "Swift 4" if horseName.isEmpty { print("Empty string") }
isEmpty将按照您的想法执行,如果string ==“”,它将返回true。 一些其他的答案指出,你有一个可选的string的情况。
请使用可选链接 !
如果string不是零,则会使用isEmpty,否则不会。
下面,optionalString不会被设置,因为string是零
let optionalString: String? = nil if optionalString?.isEmpty == true { optionalString = "Lorem ipsum dolor sit amet" }
显然你不会使用上面的代码。 收益来自JSONparsing或其他您有价值的情况。 这保证代码将会运行,如果有一个值。
你也可以使用一个可选的扩展,所以你不必担心解包或使用== 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 } } }
注意:在可选的时候调用这个,确保不要使用?
否则它仍然需要解包。
检查文本中只有空格和换行符
extension String { var isBlank:Bool { return self.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceAndNewlineCharacterSet()).isEmpty } }
运用
if text.isBlank { //text is blank do smth }
对于可选的string怎么样:
if let string = string where !string.isEmpty { print(string) }
关于什么
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") }