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

thu*_*ief 43 swift

这是如何在swift中检查文本字段是否为空的扩展,而不是重复

给出的答案,

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

对我来说不起作用,即即使文本字段中没有输入任何内容也会触发if循环.(我已经从原始版本修改了它,因为我只想在字段包含文本时触发代码).

第二个答案

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

    }
}
Run Code Online (Sandbox Code Playgroud)

更接近,但它接受像" "不空的字符串.我可以自己构建一些东西,但有没有一个函数可以检查字符串是否包含空白以外的东西?

aka*_*kyy 115

您应该从空格字符修剪字符串并检查它是否为空:

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

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

  • 我可以建议`!str.stringByTrimmingCharactersInSet(whitespaceSet).isEmpty`?我_think_`isEmpty`可能会更快一点,因为它是O(N). (4认同)
  • 我会说isEmpty是或者至少应该是O(1):) (3认同)

小智 20

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

extension String {
    func isEmptyOrWhitespace() -> Bool {

        if(self.isEmpty) {
            return true
        }

        return (self.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceCharacterSet()) == "")
    }
}
Run Code Online (Sandbox Code Playgroud)


Mar*_*ens 8

斯威夫特 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) == "")
    }
}
Run Code Online (Sandbox Code Playgroud)

原始海报的代码正在检查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) == "")
    }
}
Run Code Online (Sandbox Code Playgroud)


ron*_*ory 5

akashivskyy答案雨燕3.0

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