显然,swift 没有 Isnumber() 函数。我知道整数是 string.toInt()。但是双呢? 我还发现有人写了一个 toDouble() 但它没有编译(NSNumber?没有名为 doubleValue 的成员)我猜这是因为不支持可选类型?
extension String {
func toDouble() -> Double? {
var formatter = NSNumberFormatter()
let number = formatter.numberFromString(self)
if number == nil {
return nil
}
return number.doubleValue
}
}
最佳答案
您就快完成了——NSNumberFormatter
返回一个可选的NSNumber
,它有一个doubleValue
属性。您只需要正确解包 NSNumber
:
extension String {
func toDouble() -> Double? {
enum F {
static let formatter = NSNumberFormatter()
}
if let number = F.formatter.numberFromString(self) {
return number.doubleValue
}
return nil
}
}
"12.345".toDouble() // 12.345
"12345".toDouble() // 12345.0
"asdf".toDouble() // nil
关于swift - 在 Swift 中将非符号字符串转换为 Int 或 Double,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26002979/