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

这是 如何检查文本字段是否为空的一个扩展,而不是一个副本

给出的答案是,

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

对我来说不起作用,也就是说,即使在文本字段中没有输入任何内容,if 循环也会被触发。(我修改了原始代码,因为我只在字段包含文本时才触发代码)。

第二个答案

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


}
}

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

44361 次浏览

这个问题的答案是最近一次针对 Swift 5.2和 iOS 13.5 SDK 进行修订的。


您可以从字符串中剪裁空格字符,并检查它是否为空:

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
}


}

快速回答4:

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

Swift 4.2

String 的扩展名为空或空格

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
}


}

enter image description here

方法

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

使用

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