gpt4 book ai didi

string - Swift 表单验证 - 检查是否输入了 Int 或 String

转载 作者:可可西里 更新时间:2023-10-31 23:56:36 26 4
gpt4 key购买 nike

我正在尝试验证表单以确保用户输入的是整数而不是字符串。我可以检查数字是否为整数,如下所示:

 var possibleNumber = timeRetrieved.text
convertedNumber = possibleNumber.toInt()
// convertedNumber is inferred to be of type "Int?", or "optional Int"

if convertedNumber != nil {

println("It's a number!")

totalTime = convertedNumber!


}

我的问题是我想确保用户没有输入任何文本、 double 等。我只需要整数。以下代码不起作用,因为如果变量是整数,它的计算结果为真。我应该使用什么代码来评估变量是否不是整数?

if convertedNumber != nil  {


let alertController = UIAlertController(title: "Validation Error", message: "You must enter an integer number!", preferredStyle: .Alert)
let alertAction = UIAlertAction(title: "OK", style: UIAlertActionStyle.Destructive, handler: {(alert : UIAlertAction!) in
alertController.dismissViewControllerAnimated(true, completion: nil)
})
alertController.addAction(alertAction)
presentViewController(alertController, animated: true, completion: nil)

最佳答案

Swift 2 改变了这一点:因为 Int("abc") 和 Int("0") 都返回 0,所以不能使用整数转换。你可以使用这个:

class Validation {
static func isStringNumerical(string : String) -> Bool {
// Only allow numbers. Look for anything not a number.
let range = string.rangeOfCharacterFromSet(NSCharacterSet.decimalDigitCharacterSet().invertedSet)
return (range == nil)
}
}

它使用 decimalDigitCharacterSet,并且可以更改为使用您想要的任何字符集。

func testIsStringNumerical() {
XCTAssertEqual(SignUpLoyaltyViewController.isStringNumerical("123"), true)
XCTAssertEqual(SignUpLoyaltyViewController.isStringNumerical(""), true)
XCTAssertEqual(SignUpLoyaltyViewController.isStringNumerical("12AA"), false)
XCTAssertEqual(SignUpLoyaltyViewController.isStringNumerical("123.4"), false)
}

这比 Regex 答案快得多。 (2000 次运行,0.004 秒对正则表达式 0.233 秒)

Timing from device

关于string - Swift 表单验证 - 检查是否输入了 Int 或 String,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27304022/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com