检查 Swift 文本字段是否包含非空格

Check if Swift text field contains non-whitespace

这是 How to check if a text field is empty or not in swift

的扩展,而不是重复

给出的答案,

@IBAction func Button(sender: AnyObject) {
    if textField1.text != ""  {
        // textfield 1 
    }
}

对我不起作用,即即使在文本字段中未输入任何内容,if 循环也会被触发。 (我已经修改了原来的代码,因为我希望仅在字段包含文本时触发代码)。

第二个答案

@IBAction func Button(sender: AnyObject) {
    if !textField1.text.isEmpty{

    }
}

更接近,但它接受像 " " 这样的字符串不为空。我可以自己构建一些东西,但是是否有一个函数可以检查字符串是否包含空格以外的内容?

此答案最后针对 Swift 5.2 和 iOS 13.5 SDK 进行了修订。


您可以 trim 字符串中的空白字符并检查它是否为空:

if !textField1.text.trimmingCharacters(in: .whitespaces).isEmpty {
    // string contains non-whitespace characters
}

您也可以使用 .whitespacesAndNewlines 删除换行符。

extension StringProtocol where Index == String.Index {
    var isEmptyField: Bool {
        return trimmingCharacters(in: .whitespaces) == ""
    }
}


if yourTextField.text.isEmptyField {
    // Field is empty
} else {
    // Field is NOT empty
}

下面是我编写的扩展,效果很好,特别是对于那些来自 .NET 背景的人:

extension String {
    func isEmptyOrWhitespace() -> Bool {

        if(self.isEmpty) {
            return true
        }

        return (self.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceCharacterSet()) == "")
    }
}

Swift 3.0:

let whitespaceSet = CharacterSet.whitespaces
if !str.trimmingCharacters(in: whitespaceSet).isEmpty {
  // string contains non-whitespace characters
}

答案在 Swift 3.0

if stringValue.trimmingCharacters(in: CharacterSet.whitespaces).isEmpty
{}

Swift 3.* 中回答,考虑换行符、制表符

extension String {

    var containsNonWhitespace: Bool {
        return !self.trimmingCharacters(in: .whitespacesAndNewlines).isEmpty
    }

}

在 swift 4 中回答:

extension String {
    func isEmptyOrWhitespace() -> Bool {
        if(self.isEmpty) {
            return true
        }
        return (self.trimmingCharacters(in: NSCharacterSet.whitespaces) == "")
    }
}

Swift 4.2

字符串的扩展名是空的或空格

extension String {
    func isEmptyOrWhitespace() -> Bool {
        
        // Check empty string
        if self.isEmpty {
            return true
        }
        // Trim and check empty string
        return (self.trimmingCharacters(in: .whitespaces) == "")
    }
}

原始发布者的代码正在检查 text 可选的文本字段。所以他需要一些代码来检查可选字符串。因此,让我们也创建一个函数来处理它:

可选字符串的扩展名为 nil、空或空格

extension Optional where Wrapped == String {
    func isEmptyOrWhitespace() -> Bool {
        // Check nil
        guard let this = self else { return true }
        
        // Check empty string
        if this.isEmpty {
            return true
        }
        // Trim and check empty string
        return (this.trimmingCharacters(in: .whitespaces) == "")
    }
}

swift 4.2

@IBAction func checkSendButton(_ sender: UITextField) {
    if((sender.text?.count)! > 0 && !(sender.text!.trimmingCharacters(in: .whitespaces)).isEmpty){
        self.sendButton.isEnabled = true
    }
    else{
        self.sendButton.isEnabled = false
    }
}

如果您需要演示,请附上图片回答

// MY FUNCTIONS
private func checkMandatoryFields(){

    //CHECK EMPTY OR SPACES ONLY FIELDS
    if let type = typeOutle.text, let name = nameOutlet.text, let address = addressOutlet.text, type.trimmingCharacters(in: .whitespaces).isEmpty || name.trimmingCharacters(in: .whitespaces).isEmpty || address.trimmingCharacters(in: .whitespaces).isEmpty {
        print("Mandatory fields are: ")
        errorDisplay(error: "Mandatory fields are: Type, Name, Address.")
        return
    }

}

方法

 func trim() -> String {
    return self.trimmingCharacters(in: NSCharacterSet.whitespacesAndNewlines)
}

使用

if textField.text.trim().count == 0 {
    // Do your stuff
}