我在Swift中有一个String类型的变量,其内容可能如下:
var str:String = "45.7" //content is of float type
或者内容可能是:
var str:String = "45" //content is of int type
内容也可以是具有更多数字和/或小数的任何其他类型。我怎么能相应地转换字符串?
变量只有一个,没有两个变量。并且变量的值不固定,如果它包含小数或不包含,它可能包含小数点数或不包含小数点数。单个变量可能具有上述存储数据的可能性。
答案 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