Mic*_*ola 10 string double swift
在Swift中,如何检查字符串是否是有效的double值?我一直在使用此问题的以下扩展(但作为一个浮点数),但如果无法转换该值,它只返回"0":
extension String {
var doubleValue:Double? {
return (self as NSString).doubleValue
}
}
Run Code Online (Sandbox Code Playgroud)
理想情况下,我希望它返回nil所以它可以被捕获if-let,如下所示:
if let i = str.doubleValue {
object.price = i
} else {
// Tell user the value is invalid
}
Run Code Online (Sandbox Code Playgroud)
Leo*_*bus 24
编辑/更新:Xcode 9或更高版本•Swift 4或更高版本
您可以使用Double initialiser StringProtocol创建扩展并使用它来检查您的字符串是否为有效的double,如下所示:
extension StringProtocol {
var double: Double? {
return Double(self)
}
var float: Float? {
return Float(self)
}
var integer: Int? {
return Int(self)
}
}
Run Code Online (Sandbox Code Playgroud)
测试
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
Run Code Online (Sandbox Code Playgroud)
and*_*iys 14
每次进行转换时,不创建数字格式器确实更有效:
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
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
15468 次 |
| 最近记录: |