swift swift2

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)