【问题标题】:Swift extract an Int, Float or Double value from a String (type-conversion)Swift 从字符串中提取 Int、Float 或 Double 值(类型转换)
【发布时间】:2014-09-07 08:55:57
【问题描述】:

你能帮我吗?我需要了解如何将字符串转换为 Int、Float 或 Double!当我尝试从 UITextField 获取值并需要这种类型的转换时,就会出现此问题!

我以前是这样的:

var myValue : Float = myTextField.text.bridgeToObjectiveC().floatValue

但是从 Xcode 6 beta 6 开始,它似乎不再工作了!

我也试过这样:

var str = "3.14"

// Conversion from StringValue to an Int
var intValue : Int = str.toInt()!

// Other converstion from StringValue to an Int
var intOtherValue : Int = Int(str)

// Converstion from StringValue to a Float
var floatValue : Float = str.bridgeToObjectiveC().floatValue

// Converstion from StringValue to a Double
var doubleValue : Double = Double(str)

请帮助我或告诉我在哪里可以找到答案!非常感谢!

【问题讨论】:

    标签: string swift floating-point int double


    【解决方案1】:

    String 转换为NSString 并使用便捷方法:

    var str = "3.1"
    

    到内部

    var intValue : Int = NSString(string: str).integerValue // 3

    浮动

    var floatValue : Float = NSString(string: str).floatValue // 3.09999990463257

    加倍

    var doubleValue : Double = NSString(string: str).doubleValue // 3.1


    参考

    var doubleValue: Double { get }
    var floatValue: Float { get }
    var intValue: Int32 { get }
    @availability(OSX, introduced=10.5)
    var integerValue: Int { get }
    @availability(OSX, introduced=10.5)
    var longLongValue: Int64 { get }
    @availability(OSX, introduced=10.5)
    

    【讨论】:

    • 您可以将字符串转换为NSString 而不是使用NSString 构造函数:var floatValue = (str as NSString).floatValue
    • 感谢它有很大帮助!非常感谢!
    • 谢谢!它节省了我的时间。
    【解决方案2】:

    用途:

    Int(string:String)
    Double(string:String)
    Float(string:String)
    

    如果它无法解析字符串,则返回一个可选的 nil。 例如:

    var num = 0.0
    if let unwrappedNum = Double("5.0") {
        num = unwrappedNum
    } else {
        print("Error converting to Double")
    }
    

    如果你确定,当然可以强制解包:

    var foo = Double("5.0")!
    

    扩展字符串

    如果您在多个地方执行此操作,并且希望在任何地方都以相同的方式处理错误,那么您可能希望使用转换方法扩展 String

    例如:

    extension String {
        func toDouble() -> Double {
            if let unwrappedNum = Double(self) {
                return unwrappedNum
            } else {
                // Handle a bad number
                print("Error converting \"" + self + "\" to Double")
                return 0.0
            }
        }
    }
    

    然后使用它:

    let str = "4.9"
    var num = str.toDouble()
    

    【讨论】:

      【解决方案3】:
      public extension String {
          public func toFloat() -> Float? {
              return Float.init(self)
          }
      
          public func toDouble() -> Double? {
              return Double.init(self)
          }
      }
      

      【讨论】:

      • 请为您的回答添加简短的解释,以供未来访问者参考。
      【解决方案4】:
      var holdTextFieldToStringValue = myTextField.text
      
      //convert from string to Int
      
      var holdIntValue = holdTextFieldToStringValue.toInt()!
      
      //convert from string to Double
      
      var holdDoubleValue = Double((holdTextFieldToStringValue as NSString).doubleValue)
      

      【讨论】:

        【解决方案5】:
        let strValue = "14.03"
        
        let result = (strValue as NSString).floatValue
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2014-11-18
          • 1970-01-01
          • 2020-08-07
          • 2010-10-20
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多