Получить целочисленное значение из строки в Swift
так что я могу сделать это:
var stringNumb: NSString = "1357"
var someNumb: CInt = stringNumb.intValue
но я не могу найти способ сделать это ж/String. Я хотел бы сделать что-то вроде:
var stringNumb: String = "1357"
var someNumb: Int = Int(stringNumb)
это тоже не работает:
var someNumbAlt: Int = myString.integerValue
12 ответов:
Swift 2.0 вы можете инициализировать целое число с помощью конструктора
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 Страница 49x.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 { .... } .... }это, например, расширяет swift native String объект toFloat
преобразование строки в Int в Swift 2.0:
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
Comments