如何根据其在Swift中的内容转换字符串?
我在夫特String类型的变量,其含量可以为如下:如何根据其在Swift中的内容转换字符串?
var str:String = "45.7" //content is of float type
或者,内容可以是:
var str:String = "45" //content is of int type
内容也可以是具有多个的任何其它类型数字和/或小数。我怎样才能相应地转换字符串?
该变量只有一个,没有两个变量。而且变量的值不是固定的,如果它包含一个小数或不包含,它可能包含一个小数点数或不可以。单个变量可能具有上述存储数据的可能性。
您可以使用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)
}
如果字符串是“45”,转换为“Float”仍然成功,虽然它将是一个整数 – FelixSFD
@FelixSFD同时检查编辑答案的更多细节,因为如果字符串包含多个'.'它会崩溃,现在它将不会。 –
途经:
Float(str)
和:
Int(str)
分别。
或者,如果你不知道在编译时的数值类型:
NumberFormatter().number(from: str)
变量的值是否包含小数不是固定的。而变量是单个的,变量的值根据用户输入而改变。我提出的第二个变量只是为了展示String可以包含的可能性。 –
@MohitMishra:你想要的是'NSNumber'。 –
我只是想相应地转换字符串。而字符串的内容并不是预先确定的,这取决于用户的输入。如果用户输入一个小数点的数字,那么我想将其更改为浮点类型,如果用户只是输入一个非小数点数,那么我想将其更改为Int类型。 –
在你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
的可能的复制[斯威夫特 - 字符串转换为INT](http://*.com/questions/24115141/swift-converting-string-to-int) – FelixSFD