我想错误检查Swift中的整数条目,以便:
我相信我有一个满足1,2和4但尚未满足3的解决方案。
func makeInt( incoming: String ) {
let tempValue = Int( incoming.stringByReplacingOccurrencesOfString( thousandSeparator, withString: "" ).stringByTrimmingCharactersInSet( NSCharacterSet.whitespaceCharacterSet() ) )
if tempValue != nil {
print( tempValue! )
}
else {
print( "Life hurts" )
}
}
makeInt( "1000" ) --> 1000
makeInt( "1,000" ) --> 1000
makeInt( "10,00" ) --> 1000 *Should be Life hurts*
makeInt( "doggy" ) --> Life hurts
我接下来要做的另一个地方是设置一个正则表达式,映射到数千个地方的千位分隔符,但在我去那里之前,我很好奇是否有任何其他方法可以做到这一点似乎是一个相当普遍的需求。
非常感谢提前!
答案 0 :(得分:2)
您可以使用正则表达式来检查格式,但可能更容易使用为您进行此类验证的现有NSNumberFormatter
,例如:
let formatter: NSNumberFormatter = {
let _formatter = NSNumberFormatter()
_formatter.numberStyle = .DecimalStyle
return _formatter
}()
然后
func makeInt(incoming: String) {
guard let value = formatter.numberFromString(incoming) else {
print("Life hurts")
return
}
print(value.integerValue)
}
这表明了您描述的行为。然后它还支持本地化(其中千位分隔符是根据用户的语言环境自动确定的。)