在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