Получать целочисленное значение из строки в swift

Поэтому я могу это сделать:

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
+109
источник поделиться
12 ответов

Swift 2.0 вы можете инициализировать Integer с помощью конструктора

var stringNumber = "1234"
var numberFromString = Int(stringNumber)
+138
источник

Я бы использовал:

var stringNumber = "1234"
var numberFromString = stringNumber.toInt()
println(numberFromString)

Примечание toInt():

Если строка представляет целое число, которое вписывается в Int, возвращает соответствующее целое число.

+92
источник
другие ответы

Связанные вопросы


Похожие вопросы

В Swift 3.0

Тип 1: Преобразование NSString в строку

    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"
    }
+13
источник

Вы хотите 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
+10
источник

Если вы можете использовать только 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. "Язык быстрого программирования". интерактивные книги. https://itun.es/us/jEUH0.l страница 49

x.toInt()
+5
источник

Вы можете перейти от String к NSString и преобразовать из CInt в Int следующим образом:

var myint: Int = Int(stringNumb.bridgeToObjectiveC().intValue)
+2
источник

выше ответ не помог мне, так как мое строковое значение было "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

Благодаря это сообщение в блоге.

+2
источник

Я написал расширение для этой цели. Он всегда возвращает Int. Если строка не помещается в Int, возвращается 0.

extension String {
    func toTypeSafeInt() -> Int {
        if let safeInt = self.toInt() {
            return safeInt
        } else {
            return 0
        }
    }
}
+1
источник

Более общим решением может быть расширение

extension String {
    var toFloat:Float {
        return Float(self.bridgeToObjectiveC().floatValue)
    }
    var toDouble:Double {
        ....
    }
    ....
}

это, например, расширяет быстрый родной объект String с помощью функции toFloat

0
источник

Преобразование String в Int в Swift 2.0:

var str:NSString = Data as! NSString
var cont:Int = str.integerValue

использовать .intergerValue or intValue for Int32

0
источник

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) не работал.

0
источник

Простой, но грязный способ

// 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
0
источник

Посмотрите другие вопросы по меткам или Задайте вопрос