如何根据Swift中的内容转换String?

时间:2016-12-17 08:25:27

标签: ios swift

我在Swift中有一个String类型的变量,其内容可能如下:

var str:String = "45.7" //content is of float type

或者内容可能是:

var str:String = "45" //content is of int type

内容也可以是具有更多数字和/或小数的任何其他类型。我怎么能相应地转换字符串?

变量只有一个,没有两个变量。并且变量的值不固定,如果它包含小数或不包含,它可能包含小数点数或不包含小数点数。单个变量可能具有上述存储数据的可能性。

3 个答案:

答案 0 :(得分:1)

您可以使用if let

var str:String = "45.7" //content is of float type
if let _ = str.range(of: "."), let floatValue = Float(str)  {        
    //Execute if string contains float value
    print(floatValue)
}
else if let intValue = Int(str) {
    //Execute if string contains integer value
    print(intValue)
}

答案 1 :(得分:0)

经:

Float(str)

Int(str)

分别

或者,如果您在编译时不知道数字类型:

NumberFormatter().number(from: str)

答案 2 :(得分:0)

playground

func isContainPoint(_ string:String) -> Bool {

    if string.contains(".") {

        return true
    }else {

        return false
    }
}

var str1:String = "45.7" //content is of float type

var str2:String = "45" //content is of int type



if isContainPoint(str1) {

    print("\(Float(str1)!)")
}else {
    print("\(Int(str1)!)")
}

if isContainPoint(str2) {

    print("\(Float(str2)!)")
}else {
    print("\(Int(str2)!)")
}

结果是:

45.7
45