一尘不染

检查字符串在Swift中是否为有效的double值

swift

在Swift中,如何检查字符串是否为有效的双精度值?我已经使用从下面的扩展这个问题的(但为float),但如果该值不能被转换,它简单地返回“0”:

extension String {
    var doubleValue:Double? {
        return (self as NSString).doubleValue
    }
}

理想情况下,我希望它返回,nil以便可以将其包含在中if-let,如下所示:

if let i = str.doubleValue {
    object.price = i
} else {
    // Tell user the value is invalid
}

阅读 459

收藏
2020-07-07

共1个答案

一尘不染

确实,每次执行转换时不创建数字格式化程序会更有效:

extension String {
     struct NumFormatter {
         static let instance = NumberFormatter()
     }

     var doubleValue: Double? {
         return NumFormatter.instance.number(from: self)?.doubleValue
     }

     var integerValue: Int? {
         return NumFormatter.instance.number(from: self)?.intValue
     }
}
2020-07-07