在swift中从string获取整数值
所以我可以这样做:
var stringNumb: NSString = "1357" var someNumb: CInt = stringNumb.intValue
但是我找不到用w / a String
。 我想要做一些事情:
var stringNumb: String = "1357" var someNumb: Int = Int(stringNumb)
这也不起作用:
var someNumbAlt: Int = myString.integerValue
Swift 2.0可以使用构造函数初始化Integer
var stringNumber = "1234" var numberFromString = Int(stringNumber)
我会使用:
var stringNumber = "1234" var numberFromString = stringNumber.toInt() println(numberFromString)
注意toInt()
:
如果string表示一个适合Int的整数,则返回相应的整数。
在Swift 3.0中
types1:将NSString转换为string
let stringNumb:NSString = "1357" let someNumb = Int(stringNumb as String) // 1357 as integer
types2:如果string只有整数
let stringNumb = "1357" let someNumb = Int(stringNumb) // 1357 as integer
types3:如果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. (ie,) let stringNumb = "13er4" }
你想要的方法是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
如果只能使用NSString
。
这与Objective-C非常相似。 所有的数据types都存在,但需要添加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()
函数。请参阅Apple Inc.的“The Swift Programming Language”。iBooks。 https://itun.es/us/jEUH0.l第49页;
x.toInt()
您可以桥接从string到NSString并从CInt转换为Int像这样:
var myint: Int = Int(stringNumb.bridgeToObjectiveC().intValue)
我为此写了一个扩展。 它总是返回一个Int
。 如果string不适合Int
,则返回0。
extension String { func toTypeSafeInt() -> Int { if let safeInt = self.toInt() { return safeInt } else { return 0 } } }
上面的答案没有帮助我,因为我的string值是“700.00”
与Swift 2.2这对我工作
let myString = "700.00" let myInt = (myString as NSString).integerValue
我将myInt传递给NSFormatterClass
let formatter = NSNumberFormatter() formatter.numberStyle = .CurrencyStyle formatter.maximumFractionDigits = 0 let priceValue = formatter.stringFromNumber(myInt!)! //Now priceValue is ₹ 700
感谢这篇博文。
更一般的解决scheme可能是一个扩展
extension String { var toFloat:Float { return Float(self.bridgeToObjectiveC().floatValue) } var toDouble:Double { .... } .... }
这例如通过toFloat扩展了swift本地String对象
在Swift 2.0中将string转换为Int:
var str:NSString = Data as! NSString var cont:Int = str.integerValue
.intergerValue or intValue for Int32
使用.intergerValue 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)
扩展方式
这个更好,因为它可以很好地与locale和decimals一起玩。
extension String { var numberValue:NSNumber? { let formatter = NSNumberFormatter() formatter.numberStyle = .DecimalStyle return formatter.numberFromString(self) } }
现在你可以简单地做:
let someFloat = "42.42".numberValue let someInt = "42".numberValue