检查Swift中的空字符串?

时间:2014-06-10 04:59:34

标签: swift

在Objective C中,可以执行以下操作来检查字符串:

if ([myString isEqualToString:@""]) {
    NSLog(@"myString IS empty!");
} else {
    NSLog(@"myString IS NOT empty, it is: %@", myString);
}

如何在Swift中检测空字符串?

16 个答案:

答案 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 statementearly 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)

In Xcode 10.2 swift 5

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
    }
}