显然,swift没有Isnumber()函数。我知道整数是string.toInt()。但是Double怎么样? 我还发现有人写了一个toDouble()但它没有编译(NSNumber?没有名为doubleValue的成员)我猜它是因为不支持可选类型?
extension String {
func toDouble() -> Double? {
var formatter = NSNumberFormatter()
let number = formatter.numberFromString(self)
if number == nil {
return nil
}
return number.doubleValue
}
}
答案 0 :(得分:8)
您几乎就在那里 - 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
答案 1 :(得分:1)
您可以使用is
运算符。
if number is Double{
//do double thinks
}