2016-12-17 27 views
-3

我在夫特String类型的变量,其含量可以为如下:如何根据其在Swift中的内容转换字符串?

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

或者,内容可以是:

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

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

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

+0

的可能的复制[斯威夫特 - 字符串转换为INT](http://stackoverflow.com/questions/24115141/swift-converting-string-to-int) – FelixSFD

回答

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) 
} 
+0

如果字符串是“45”,转换为“Float”仍然成功,虽然它将是一个整数 – FelixSFD

+0

@FelixSFD同时检查编辑答案的更多细节,因为如果字符串包含多个'.'它会崩溃,现在它将不会。 –

0

途经:

Float(str) 

和:

Int(str) 

分别。

或者,如果你不知道在编译时的数值类型:

NumberFormatter().number(from: str) 
+0

变量的值是否包含小数不是固定的。而变量是单个的,变量的值根据用户输入而改变。我提出的第二个变量只是为了展示String可以包含的可能性。 –

+0

@MohitMishra:你想要的是'NSNumber'。 –

+0

我只是想相应地转换字符串。而字符串的内容并不是预先确定的,这取决于用户的输入。如果用户输入一个小数点的数字,那么我想将其更改为浮点类型,如果用户只是输入一个非小数点数,那么我想将其更改为Int类型。 –

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 
相关问题