Swift从String中提取Int,Float或Double值(类型转换)

时间:2014-09-07 08:55:58

标签: string swift floating-point int double

你能在这帮我吗?我需要了解如何将String转换为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)

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

5 个答案:

答案 0 :(得分:27)

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

var str = "3.1"

到Int

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)

答案 1 :(得分:4)

使用:

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

如果无法解析字符串,则返回一个可选的nil为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()

答案 2 :(得分:1)

public extension String {
    public func toFloat() -> Float? {
        return Float.init(self)
    }

    public func toDouble() -> Double? {
        return Double.init(self)
    }
}

答案 3 :(得分:0)

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)

答案 4 :(得分:0)

let strValue = "14.03"

let result = (strValue as NSString).floatValue