在Objective C中,可以执行以下操作来检查字符串:
if ([myString isEqualToString:@""]) {
NSLog(@"myString IS empty!");
} else {
NSLog(@"myString IS NOT empty, it is: %@", myString);
}
如何在Swift中检测空字符串?
答案 0 :(得分:213)
现在有内置功能可以使用.isEmpty
检测空字符串:
if emptyString.isEmpty {
print("Nothing to see here")
}
Apple预发布文档:"Strings and Characters"。
答案 1 :(得分:88)
检查字符串是否为空的简明方法是:
var myString: String? = nil
if (myString ?? "").isEmpty {
print("String is nil or empty")
}
答案 2 :(得分:41)
我完全重写了我的回答(again)。这次是因为我已成为guard
statement和early return的粉丝。它使代码更清晰。
检查零长度。
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
语句后,您可以安全地使用未包装的非空字符串。
答案 3 :(得分:26)
Use
var isEmpty: Bool { get }
Example
let lang = "Swift 4"
if lang.isEmpty {
print("Empty string")
}
答案 4 :(得分:24)
以下是检查字符串是否为空的方法。由空白'我的意思是一个字符串,它是空的或只包含空格/换行符。
struct MyString {
static func blank(text: String) -> Bool {
let trimmed = text.trimmingCharacters(in: CharacterSet.whitespacesAndNewlines)
return trimmed.isEmpty
}
}
使用方法:
MyString.blank(" ") // true
答案 5 :(得分:9)
同时进行零检查和长度 从Swift 2.0和iOS 9开始,您可以使用
if(yourString?.characters.count > 0){}
答案 6 :(得分:9)
您还可以使用可选扩展程序,因此您不必担心展开或使用== 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
}
}
}
注意:在可选项上调用此选项时,请确保不要使用?
,否则仍需要解包。
答案 7 :(得分:4)
isEmpty会按照您的想法执行,如果string =="",它将返回true。 其他一些答案指向您有可选字符串的情况。
请使用Optional Chaining !!!!
如果字符串不是nil,则使用isEmpty,否则不会。
下面,不会设置optionalString,因为字符串是nil
let optionalString: String? = nil
if optionalString?.isEmpty == true {
optionalString = "Lorem ipsum dolor sit amet"
}
显然你不会使用上面的代码。获得的收益来自JSON解析或其他具有值的情况。如果有值,这将保证代码运行。
答案 8 :(得分:1)
对于可选字符串,如何:
if let string = string where !string.isEmpty
{
print(string)
}
答案 9 :(得分:1)
检查文本中是否只检查空格和换行符
extension String
{
var isBlank:Bool {
return self.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceAndNewlineCharacterSet()).isEmpty
}
}
使用
if text.isBlank
{
//text is blank do smth
}
答案 10 :(得分:0)
怎么样?
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")
}
答案 11 :(得分:0)
if myString?.startIndex != myString?.endIndex {}
答案 12 :(得分:0)
我建议向字符串或数组添加小扩展名,类似于
extension Collection {
public var isNotEmpty: Bool {
return !self.isEmpty
}
}
使用它可以编写易于阅读的代码。 比较这两行
if !someObject.someParam.someSubParam.someString.isEmpty {}
和
if someObject.someParam.someSubParam.someString.isNotEmpty {}
很容易错过第一行开头的!标志。
答案 13 :(得分:0)
您可以使用此扩展名:
extension String {
static func isNilOrEmpty(string: String?) -> Bool {
guard let value = string else { return true }
return value.trimmingCharacters(in: .whitespaces).isEmpty
}
}
然后像这样使用它:
let isMyStringEmptyOrNil = String.isNilOrEmpty(string: myString)
答案 14 :(得分:0)
public extension Swift.Optional {
func nonEmptyValue<T>(fallback: T) -> T {
if let stringValue = self as? String, stringValue.isEmpty {
return fallback
}
if let value = self as? T {
return value
} else {
return fallback
}
}
}
答案 15 :(得分:-3)
这是我使用的(适用于字符串和其他对象):
func checkValidityOfData(_ data: Any?, withStringCheck mode: Bool) -> Bool {
// Check if the data is valid or not.
if ((data != nil) && !(data is NSNull)) {
// Check if we need to perform string checks.
if (mode == true) {
// Check the input data string.
let dataCheck = (data as! String).trimmingCharacters(in: CharacterSet.whitespacesAndNewlines)
// Check if the string is valid.
if (dataCheck.count > 0) {
// Ensure the string is not literally "<null>".
if ((data as! String) == "<null>") {
return false
} else {
return true
}
} else {
return false
}
} else {
return true
}
} else {
return false
}
}