从swift中的字符串中获取整数值

Log*_*gan 129 swift swift2

所以我可以这样做:

var stringNumb: NSString = "1357"

var someNumb: CInt = stringNumb.intValue
Run Code Online (Sandbox Code Playgroud)

但我无法找到方法来做到这一点String.我想做点什么:

var stringNumb: String = "1357"

var someNumb: Int = Int(stringNumb)
Run Code Online (Sandbox Code Playgroud)

这也不起作用:

var someNumbAlt: Int = myString.integerValue
Run Code Online (Sandbox Code Playgroud)

Bur*_*man 174

Swift 2.0你可以使用构造函数初始化Integer

var stringNumber = "1234"
var numberFromString = Int(stringNumber)
Run Code Online (Sandbox Code Playgroud)

  • 从Swift 2.0开始,你不再使用`toInt()`方法作为`String`的一部分.所以这个`Int`构造函数现在是将字符串转换为int的唯一方法. (14认同)

CW0*_*007 95

我用的是:

var stringNumber = "1234"
var numberFromString = stringNumber.toInt()
println(numberFromString)
Run Code Online (Sandbox Code Playgroud)

注意toInt():

如果字符串表示适合Int的整数,则返回相应的整数.

  • 这很有效,但是如果你明确地声明了var,你需要添加一个惊叹号:`var someNumb:Int = stringNumber.toInt()!`正如@NateCook指出的那样 (5认同)
  • 而不是在调用上放置`!`,你可以将变量声明为可选:`someNumb:Int?= stringNumber.toInt()`.然后类型安全系统将意识到`foo`可能不存在.如果您的字符串无法转换为数字,那么放置`!`当然会崩溃. (5认同)

Raj*_*n S 18

在Swift 3.0中

类型1:将NSString转换为String

    let stringNumb:NSString = "1357"
    let someNumb = Int(stringNumb as String) // 1357 as integer
Run Code Online (Sandbox Code Playgroud)

类型2:如果String仅具有整数

    let stringNumb = "1357"
    let someNumb = Int(stringNumb) // 1357 as integer
Run Code Online (Sandbox Code Playgroud)

类型3:如果String具有浮点值

    let stringNumb = "13.57"
    if let stringToFloat = Float(stringNumb){
        let someNumb = Int(stringToFloat)// 13 as Integer
    }else{
       //do something if the stringNumb not have digit only. (i.e.,) let stringNumb = "13er4"
    }
Run Code Online (Sandbox Code Playgroud)


Nat*_*ook 11

你想要的方法是toInt()- 你必须要小心,因为toInt()返回一个可选的Int.

let stringNumber = "1234"
let numberFromString = stringNumber.toInt()
// numberFromString is of type Int? with value 1234

let notANumber = "Uh oh"
let wontBeANumber = notANumber.toInt()
// wontBeANumber is of type Int? with value nil
Run Code Online (Sandbox Code Playgroud)


Joh*_*ato 5

如果你只能使用一个NSString.

它与objective-c非常相似.所有数据类型都在那里,但需要as NSString添加

    var x = "400.0" as NSString 

    x.floatValue //string to float
    x.doubleValue // to double
    x.boolValue // to bool
    x.integerValue // to integer
    x.intValue // to int
Run Code Online (Sandbox Code Playgroud)

我们还toInt()增加了一个功能参见Apple Inc.的"Swift编程语言".iBooks.https://itun.es/us/jEUH0.l第49页

x.toInt()
Run Code Online (Sandbox Code Playgroud)

  • 我不想使用NSString,请参阅问题. (2认同)