swift - 在 Swift 中将非符号字符串转换为 Int 或 Double

标签 swift char int double type-conversion

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

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

最佳答案

您就快完成了——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/

相关文章:

swift - 如何在不同情况下快速启用按钮?

c++ - 如何将 char* 分配给 char 数组?

c# - 为动态 int 变量赋值

int 和 longs 之间的 java 乘法给出 0

ios - CloudKit 无法通过约束与核心数据同步

ios - 从自定义快捷操作中传递参数

c# - System.Net.Sockets 发送与 stdcall :send

objective-c - 将 float 四舍五入到 objective-c 中的下一个整数?

swift - 如何使用 Swift 创建可折叠的 NSLog-Output?

c++ - 替换字符串数组中所有出现的字母