【问题标题】:How do I check UITextField values for specific types of characters e.g. Letters or Number?如何检查特定类型字符的 UITextField 值,例如字母还是数字?
【发布时间】:2014-10-28 09:13:49
【问题描述】:

如果文本字段中包含除字母、数字、破折号和空格以外的任何内容,我想要做的是在下面的 if 语句中将一些布尔值设置为 true。

然后为电子邮件字段检查有效的电子邮件。

这就是我检查长度的方式:

    if countElements(textField.text!) < 2 || countElements(textField.text) > 15 {
        errorLabel.text = "Name must have between 2 and 15 characters."
        self.signUpView.signUpButton.enabled = false
    } else {
        errorLabel.text = ""
        self.signUpView.signUpButton.enabled = true
    }

此 if 语句位于 UITextFieldDelegate 方法 textFielddidEndEditing 内。我觉得我必须使用某种形式的正则表达式来检查有效的电子邮件。

使用正则表达式检查一个字段是否只包含我允许的字符并返回一个布尔值,它会告诉我文本字段是否包含不允许的字符,这样我就可以显示错误消息。

有没有一些首选的方法来做到这一点?在objective-c中,我使用了 NSCharacterSet 但不确定如何在这里实现。

感谢您的宝贵时间

【问题讨论】:

    标签: ios regex swift uitextfield uitextfielddelegate


    【解决方案1】:

    这就是我最后的做法。

        override func textFieldDidEndEditing(textField: UITextField) {
    
            let usernameField = self.signUpView.usernameField.text as NSString
            let alphaNumericSet = NSCharacterSet.alphanumericCharacterSet()
            let invalidCharacterSet = alphaNumericSet.invertedSet
            let rangeOfInvalidCharacters = usernameField.rangeOfCharacterFromSet(invalidCharacterSet)
            let userHasNameInvalidChars = rangeOfInvalidCharacters.location != NSNotFound
    
            if textField == self.signUpView.usernameField {
    
                if userHasNameInvalidChars {
                    errorLabel.text = "Letters and numbers only please!"
                    self.signUpView.signUpButton.enabled = false
                    // do more error stuff here
                } else {
                    self.signUpView.signUpButton.enabled = true
                }
             }
         }
    

    感谢博文:http://toddgrooms.com/2014/06/18/unintuitive-swift/

    【讨论】:

      猜你喜欢
      • 2012-12-23
      • 2013-10-09
      • 2011-09-01
      • 2022-12-18
      • 1970-01-01
      • 2020-03-20
      • 1970-01-01
      • 1970-01-01
      • 2017-12-04
      相关资源
      最近更新 更多