非符号字符串到Int或Swift中的Double

时间:2014-09-23 19:16:26

标签: swift char int double type-conversion

显然,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
    }
}

来源:https://gist.github.com/rhult/5f26d69939214d5f2a3f

2 个答案:

答案 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
}