【问题标题】:How to check if the string entered in a UITextField is a number or string in Swift3?如何检查在 UITextField 中输入的字符串是 Swift3 中的数字还是字符串?
【发布时间】:2017-12-04 14:13:32
【问题描述】:

我有一个 UITextField,我们可以在其中输入电子邮件 ID 或电话号码。我的问题是可以检查在 UITextField 中输入的文本是否是在 Swift3 中单击按钮时的电话号码或电子邮件 ID? 目前我正在使用以下代码:

func isNumber(text:String)->Bool
{
    if let intVal = text.toInt()
        {return true}
    else
        {return false}
}

但它可以验证,输入是否为整数。是否可以知道输入的是emailID还是电话号码?

【问题讨论】:

  • 对电子邮件使用正则表达式
  • 如果用户输入像 +1(512)... 这样的电话号码会发生什么?顺便说一句toInt() 是 Swift 1。考虑更新。
  • @vadian 在这种情况下,如果电话号码具有特定字符以及数字,则可以使用电话号码的正则表达式

标签: ios swift3 uitextfield xcode8


【解决方案1】:
// Datatype specifier
enum DataType: Int {
  case Other = 0  // This can be string
  case Number = 1
  case Email = 2
}



// Validate Email
func isEmail(emailString: String) -> Bool {
    // Sample regex for email - You can use your own regex for email
    let emailRegEx = "[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,}"
    let emailTest = NSPredicate(format:"SELF MATCHES %@", emailRegex)
    return emailTest.evaluate(with: emailString)
}


// Check Datatype
func checkDataType(text: String)-> DataType {
    if let intVal = text.toInt() {
        return DataType.Number
    } else if isEmail(emailString: text) {
       return DataType.Email
    } else {
       return DataType.Other
   }
}

// print datatype
let dataType = checkDataType(text: "Your Input String")
print("DataType = \(dataType)")

【讨论】:

  • 请在您的答案中添加电话号码的正则表达式
  • 为此您需要电话号码的共享号码格式,您将要修复电话号码。在您的文本字段中。例如:+1-(000)-111-222 或 +91-1234567890 或 (1234)-567-890
  • 我将需要他们每个人的共同点
猜你喜欢
  • 1970-01-01
  • 2018-05-03
  • 2014-12-20
  • 2013-08-12
  • 2021-09-01
  • 1970-01-01
  • 2010-10-29
  • 2015-04-13
  • 1970-01-01
相关资源
最近更新 更多