Answers:
我会用:
var stringNumber = "1234"
var numberFromString = stringNumber.toInt()
println(numberFromString)
注意事项toInt()
:
如果字符串表示适合Int的整数,则返回相应的整数。
var someNumb: Int = stringNumber.toInt()!
是可行的,尽管如果您显式声明var,则需要添加一个感叹号:正如@NateCook所指出
!
您可以将变量声明为可选:,而不用进行调用someNumb: Int? = stringNumber.toInt()
。然后,类型安全系统将意识到foo
可能不存在。!
如果您的字符串不能转换为数字,则推杆当然会崩溃。
在Swift 3.0中
类型1:将NSString转换为String
let stringNumb:NSString = "1357"
let someNumb = Int(stringNumb as String) // 1357 as integer
类型2:如果字符串仅具有整数
let stringNumb = "1357"
let someNumb = Int(stringNumb) // 1357 as integer
类型3:如果字符串具有浮点值
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"
}
stringToFloat
is != nil
,您应该使用if let
。
您想要的方法是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
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()
添加了一个函数,请参见Apple Inc.“ The Swift Programming Language”。iBooks。https://itun.es/us/jEUH0.l第49页
x.toInt()
as NSString
。修复了它@gwcoffey
上面的答案没有帮助我,因为我的字符串值为“ 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
感谢这篇博客文章。
Double()
与使用相同的方法即可Int()
。无需使用桥接到NSString。
Double()
再使用Int()
。像这样:if let d = Double("700.00") { let i = Int(d); print (i) }
:)
在Swift 2.0中将String转换为Int:
var str:NSString = Data as! NSString
var cont:Int = str.integerValue
用 .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)
延伸方式
实际上,这会更好,因为它可以与区域设置和小数一起很好地播放。
extension String {
var numberValue:NSNumber? {
let formatter = NSNumberFormatter()
formatter.numberStyle = .DecimalStyle
return formatter.numberFromString(self)
}
}
现在您可以简单地执行以下操作:
let someFloat = "42.42".numberValue
let someInt = "42".numberValue
var someNumb: Int? = Int(stringNumb)
或var someNumb = Int(stringNumb)