Obtenga el valor entero de la cadena en swift
swift2 (12)
Convertir cadena a Int en Swift 2.0:
var str:NSString = Data as! NSString
var cont:Int = str.integerValue
use .intergerValue or intValue for Int32
Entonces puedo hacer esto
var stringNumb: NSString = "1357"
var someNumb: CInt = stringNumb.intValue
Pero no puedo encontrar la manera de hacerlo con un String
. Me gustaría hacer algo como:
var stringNumb: String = "1357"
var someNumb: Int = Int(stringNumb)
Esto tampoco funciona:
var someNumbAlt: Int = myString.integerValue
El método que desea es toInt()
- tiene que tener un poco de cuidado, ya que toInt()
devuelve un Int. Opcional.
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
Escribí una extensión para ese propósito. Siempre devuelve un Int
. Si la cadena no encaja en un Int
, se devuelve 0.
extension String {
func toTypeSafeInt() -> Int {
if let safeInt = self.toInt() {
return safeInt
} else {
return 0
}
}
}
Puede pasar de String a NSString y convertir de CInt a Int de esta manera:
var myint: Int = Int(stringNumb.bridgeToObjectiveC().intValue)
Si puede usar un NSString
solamente.
Es bastante similar a objetivo-c. Todos los tipos de datos están allí pero requieren la adición 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
También tenemos una función toInt()
agregada. Consulte Apple Inc. "The Swift Programming Language." IBooks. https://itun.es/us/jEUH0.l página 49
x.toInt()
Una solución más general podría ser una extensión
extension String {
var toFloat:Float {
return Float(self.bridgeToObjectiveC().floatValue)
}
var toDouble:Double {
....
}
....
}
esto, por ejemplo, extiende el objeto Cadena nativo veloz mediante Flotación
Yo usaría:
var stringNumber = "1234"
var numberFromString = stringNumber.toInt()
println(numberFromString)
Nota toInt()
:
Si la cadena representa un entero que encaja en un Int, devuelve el entero correspondiente.
la respuesta anterior no me ayudó ya que el valor de mi cadena era "700.00"
con Swift 2.2 esto funciona para mí
let myString = "700.00"
let myInt = (myString as NSString).integerValue
Pasé myInt a NSFormatterClass
let formatter = NSNumberFormatter()
formatter.numberStyle = .CurrencyStyle
formatter.maximumFractionDigits = 0
let priceValue = formatter.stringFromNumber(myInt!)!
//Now priceValue is ₹ 700
Gracias a this publicación de blog.
8: 1 Probabilidades (*)
var stringNumb: String = "1357"
var someNumb = Int(stringNumb)
o
var stringNumb: String = "1357"
var someNumb:Int? = Int(stringNumb)
Int(String)
devuelve un Int?
opcional Int?
, no un Int
.
Uso seguro: no desenvolver explícitamente
let unwrapped:Int = Int(stringNumb) ?? 0
o
if let stringNumb:Int = stringNumb { ... }
(*) Ninguna de las respuestas var someNumb: Int = Int(stringNumb)
por qué var someNumb: Int = Int(stringNumb)
no funcionaba.
En Swift 3.0
Tipo 1: convierte NSString en cadena
let stringNumb:NSString = "1357"
let someNumb = Int(stringNumb as String) // 1357 as integer
Tipo 2: si la cadena solo tiene números enteros
let stringNumb = "1357"
let someNumb = Int(stringNumb) // 1357 as integer
Tipo 3: si la cadena tiene valor 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"
}
Manera simple pero sucia
// 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)
La extensión-camino
Esto es mejor, en realidad, porque jugará muy bien con locales y decimales.
extension String {
var numberValue:NSNumber? {
let formatter = NSNumberFormatter()
formatter.numberStyle = .DecimalStyle
return formatter.numberFromString(self)
}
}
Ahora puedes simplemente hacer:
let someFloat = "42.42".numberValue
let someInt = "42".numberValue
Swift 2.0 puedes inicializar Integer usando constructor
var stringNumber = "1234"
var numberFromString = Int(stringNumber)