在Swift中将可选字符串转换为int

Convert optional string to int in Swift

将可选字符串转换为int时遇到麻烦。

1
2
   println("str_VAR = \(str_VAR)")      
   println(str_VAR.toInt())

结果是

1
2
   str_VAR = Optional(100)
   nil

我想要它

1
2
   str_VAR = Optional(100)
   100

在撰写本文时,此页面上的其他答案使用了旧的Swift语法。这是一次更新。

将可选字符串转换为Int:String? -> Int

1
2
3
4
let optionalString: String? ="100"
if let string = optionalString, let myInt = Int(string){
     print("Int : \(myInt)")
}

这会将字符串"100"转换为整数100并打印输出。如果optionalString nilhello3.5,则不会打印任何内容。

另请考虑使用guard语句。


你可以这样打开它:

1
2
3
4
5
if let yourStr = str_VAR?.toInt() {
    println("str_VAR = \(yourStr)")  //"str_VAR = 100"
    println(yourStr)                 //"100"

}

请参阅此信息以获取更多信息。

何时使用"if let"?

if let是Swift中的一个特殊结构,它允许您检查Optional是否包含值,如果有,则使用展开的值执行某些操作。我们来看一下:

1
2
3
4
5
6
7
if let yourStr = str_VAR?.toInt() {
    println("str_VAR = \(yourStr)")
    println(yourStr)

}else {
    //show an alert for something else
}

if let结构展开str_VAR?.toInt()(即检查是否存储了值并获取该值)并将其值存储在yourStr常量中。您可以在if的第一个分支内使用yourStr。请注意,如果您不需要使用内部?要么 !了。重要的是要意识到yourStr实际上是Int类型,它不是可选类型,因此您可以直接使用其值。


尝试这个:

1
2
3
if let i = str_VAR?.toInt() {
    println("\(i)")
}