Objective-C
(注意:此方法在不同的语言环境下效果不佳,但比 a 稍快NSNumberFormatter
)
NSNumber *num1 = @([@"42" intValue]);
NSNumber *num2 = @([@"42.42" floatValue]);
迅速
简单但肮脏的方式
// Swift 1.2
if let intValue = "42".toInt() {
let number1 = NSNumber(integer:intValue)
}
// Swift 2.0
let number2 = Int("42')
// Swift 3.0
NSDecimalNumber(string: "42.42")
// Using NSNumber
let number3 = NSNumber(float:("42.42" as NSString).floatValue)
扩展方式
这确实更好,因为它可以很好地处理语言环境和小数。
extension String {
var numberValue:NSNumber? {
let formatter = NumberFormatter()
formatter.numberStyle = .decimal
return formatter.number(from: self)
}
}
现在您可以简单地执行以下操作:
let someFloat = "42.42".numberValue
let someInt = "42".numberValue