快速从字符串中获取整数值

所以我可以这样做:

var stringNumb: NSString = "1357"


var someNumb: CInt = stringNumb.intValue

但是我找不到用 String做这件事的方法。我想做这样的事情:

var stringNumb: String = "1357"


var someNumb: Int = Int(stringNumb)

这也行不通:

var someNumbAlt: Int = myString.integerValue
174120 次浏览

您可以将 String 连接到 NSString,并将 CInt 转换为 Int,如下所示:

var myint: Int = Int(stringNumb.bridgeToObjectiveC().intValue)

我会用:

var stringNumber = "1234"
var numberFromString = stringNumber.toInt()
println(numberFromString)

toInt():

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

如果您只能使用 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

另外,我们还添加了一个 toInt()函数,请参阅苹果公司的“快速编程语言”

x.toInt()

您需要的方法是 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

一个更通用的解决方案可能是扩展

extension String {
var toFloat:Float {
return Float(self.bridgeToObjectiveC().floatValue)
}
var toDouble:Double {
....
}
....
}

例如,它通过 toFloat 扩展了快速本机 String 对象

我为此写了一个扩展。它总是返回一个 Int。如果字符串不适合 Int,则返回0。

extension String {
func toTypeSafeInt() -> Int {
if let safeInt = self.toInt() {
return safeInt
} else {
return 0
}
}
}

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

var stringNumber = "1234"
var numberFromString = Int(stringNumber)

在 Swift 2.0中将 String 转换为 Int:

var str:NSString = Data as! NSString
var cont:Int = str.integerValue

使用 .integerValue or intValue for Int32

8:1赔率 (*)

var stringNumb: String = "1357"
var someNumb = Int(stringNumb)

或者

var stringNumb: String = "1357"
var someNumb:Int? = Int(stringNumb)

Int(String)返回一个可选的 Int?,而不是 Int


安全使用: 不要显式拆封

let unwrapped:Int = Int(stringNumb) ?? 0

或者

if let stringNumb:Int = stringNumb { ... }

(*) 实际上,没有一个答案解决了为什么 var someNumb: Int = Int(stringNumb)不起作用的问题。

简单但肮脏的方式

// Swift 1.2
if let intValue = "42".toInt() {
let number1 = NSNumber(integer:intValue)
}
// Swift 2.0
let number2 = Int(stringNumber)


// Using NSNumber
let number3 = NSNumber(float:("42.42" as NSString).floatValue)

延伸通道

这样更好,真的,因为它可以很好地处理语言环境和小数。

extension String {


var numberValue:NSNumber? {
let formatter = NSNumberFormatter()
formatter.numberStyle = .DecimalStyle
return formatter.numberFromString(self)
}
}

现在你可以简单地做:

let someFloat = "42.42".numberValue
let someInt = "42".numberValue

上面的答案没有帮助我,因为我的字符串值是“700.00”

对于 Swift 2.2,这对我来说是可行的

let myString = "700.00"
let myInt = (myString as NSString).integerValue

我把 Int 传给了 NSFormatterClass

let formatter = NSNumberFormatter()
formatter.numberStyle = .CurrencyStyle
formatter.maximumFractionDigits = 0


let priceValue = formatter.stringFromNumber(myInt!)!


//Now priceValue is ₹ 700

感谢 这个的博客文章。

在 Swift 3.0中

类型1: 将 NSString 转换为 String

    let stringNumb:NSString = "1357"
let someNumb = Int(stringNumb as String) // 1357 as integer

类型2: 如果 String 只有 Integer

    let stringNumb = "1357"
let someNumb = Int(stringNumb) // 1357 as integer

类型3: 如果 String 具有 Float 值

    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"
}