所以我可以这样做:
var stringNumb: NSString = "1357"
var someNumb: CInt = stringNumb.intValue
但是我找不到用
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()
:
如果字符串表示适合 Int 的整数,则返回相应的整数。
在 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:如果字符串具有 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"
}
您想要的方法是
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 非常相似。所有数据类型都在那里,但需要
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.“Swift 编程语言”。 iBooks。 https://itun.es/us/jEUH0.l第49页
x.toInt()
上面的答案对我没有帮助,因为我的字符串值为“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
感谢这个博客文章。
您可以从 String 桥接到 NSString 并从 CInt 转换为 Int,如下所示:
var myint: Int = Int(stringNumb.bridgeToObjectiveC().intValue)
我为此目的编写了一个扩展。它总是返回一个
Int
。如果字符串不适合 Int
,则返回 0。
extension String {
func toTypeSafeInt() -> Int {
if let safeInt = self.toInt() {
return safeInt
} else {
return 0
}
}
}
更通用的解决方案可能是扩展
extension String {
var toFloat:Float {
return Float(self.bridgeToObjectiveC().floatValue)
}
var toDouble:Double {
....
}
....
}
例如,通过 toFloat 扩展 swift 原生 String 对象
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
在 Swift 2.0 中将 String 转换为 Int:
var str:NSString = Data as! NSString
var cont:Int = str.integerValue
使用
.integerValue or intValue for Int32
Swift 5+ 快乐编码
using below extension
print("8abc2214ma3".getIntegerValue())
//Output
822143
extension String {
func getIntegerValue() -> String {
//let okayChars : Set<Character> =
// Set("abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLKMNOPQRSTUVWXYZ1234567890+-*=(),.:!_".characters)
let digitArray = self.split(separator: ".")
var value = ""
if digitArray.count > 0 {
value = String(digitArray[0])
}
else {
value = self
}
let okayChars : Set<Character> =
Set("1234567890")
let output = String(value.filter {okayChars.contains($0)})
print(output)
return output
}
}