在 Swift 中,如何检查字符串是否为有效的 double 值?我一直在使用 this question 中的以下扩展名(但作为 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
}
最佳答案
编辑/更新:Xcode 11 或更高版本 • Swift 5.1 或更高版本
您可以使用 Double
初始值设定项 init?<S>(_ text: S) where S : StringProtocol
在 StringProtocol
上创建实例属性并用它来检查是否 String
或 Substring
是有效的 Double
:
extension StringProtocol {
var double: Double? { Double(self) }
var float: Float? { Float(self) }
var integer: Int? { Int(self) }
}
测试
let str = "2.9"
if let value = str.double {
print(value) // "2.9\n"
} else {
print("invalid input")
}
str.prefix(1).integer // 2
str.suffix(1).integer // 9
关于string - 检查字符串是否是 Swift 中的有效 double 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30315723/