web-dev-qa-db-de.com

Holen Sie sich schnell einen ganzzahligen Wert von String

So kann ich das machen:

var stringNumb: NSString = "1357"

var someNumb: CInt = stringNumb.intValue

Aber ich finde den Weg nicht mit einer String. Ich möchte etwas tun wie:

var stringNumb: String = "1357"

var someNumb: Int = Int(stringNumb)

Das funktioniert auch nicht:

var someNumbAlt: Int = myString.integerValue
120
Logan

Swift 2.0 Sie können Integer mit dem Konstruktor initialisieren

var stringNumber = "1234"
var numberFromString = Int(stringNumber)
165
Burusothman

Ich würde verwenden:

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

Hinweis toInt():

Wenn die Zeichenfolge eine Ganzzahl darstellt, die in ein Int passt, wird die entsprechende Ganzzahl zurückgegeben.

95
CW0007007

In Swift 3.0  

Typ 1: NSString in String umwandeln

    let stringNumb:NSString = "1357"
    let someNumb = Int(stringNumb as String) // 1357 as integer

Typ 2: Wenn der String nur Integer hat

    let stringNumb = "1357"
    let someNumb = Int(stringNumb) // 1357 as integer

Typ 3: Wenn der String Float-Wert hat

    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"
    }
17
Rajamohan S

Die gewünschte Methode ist toInt() - Sie müssen etwas vorsichtig sein, da toInt() ein optionales Int zurückgibt.

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
11
Nate Cook

Wenn Sie nur eine NSString verwenden können.

Es ist ziemlich ähnlich zu Ziel-c. Alle Datentypen sind vorhanden, erfordern jedoch den Zusatz 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

Wir haben auch eine toInt()-Funktion hinzugefügt. https://itun.es/us/jEUH0.l Seite 49

x.toInt()
5
John Riselvato

die obige Antwort hat mir nicht geholfen, da mein Stringwert "700.00" war.

mit Swift 2.2 funktioniert das für mich

let myString = "700.00"
let myInt = (myString as NSString).integerValue

Ich habe meinInt an NSFormatterClass übergeben 

let formatter = NSNumberFormatter()
formatter.numberStyle = .CurrencyStyle
formatter.maximumFractionDigits = 0

let priceValue = formatter.stringFromNumber(myInt!)!

//Now priceValue is ₹ 700

Danke an dieses Blogpost.

3
swiftBoy

Sie können von String zu NSString überbrücken und von CInt nach Int wie folgt konvertieren:

var myint: Int = Int(stringNumb.bridgeToObjectiveC().intValue)
2
Connor

Ich habe zu diesem Zweck eine Erweiterung geschrieben. Es wird immer eine Int zurückgegeben. Wenn der String nicht in ein Int passt, wird 0 zurückgegeben.

extension String {
    func toTypeSafeInt() -> Int {
        if let safeInt = self.toInt() {
            return safeInt
        } else {
            return 0
        }
    }
}
1
timo-haas

Einfach aber schmutzig

// 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)

Der Erweiterungsweg

Das ist wirklich besser, weil es gut mit Gebietsschemata und Dezimalzahlen zusammenspielt. 

extension String {

    var numberValue:NSNumber? {
        let formatter = NSNumberFormatter()
        formatter.numberStyle = .DecimalStyle
        return formatter.numberFromString(self)
    }
}

Jetzt können Sie einfach tun:

let someFloat = "42.42".numberValue
let someInt = "42".numberValue
0
Kevin R

8: 1 Odds (*)

var stringNumb: String = "1357"
var someNumb = Int(stringNumb)

oder

var stringNumb: String = "1357"
var someNumb:Int? = Int(stringNumb)

Int(String) gibt einen optionalen Int? zurück, keine Int.


Sichere Verwendung: nicht explizit auspacken

let unwrapped:Int = Int(stringNumb) ?? 0

oder

if let stringNumb:Int = stringNumb { ... }

(*) In keiner der Antworten ging es tatsächlich darum, warum var someNumb: Int = Int(stringNumb) nicht funktioniert.

0
SwiftArchitect

Eine allgemeinere Lösung könnte eine Erweiterung sein

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

dadurch wird beispielsweise das native Swift-Stringobjekt um toFloat erweitert

0
loopmasta

Konvertieren Sie String in Int 2.0 in Swift 2.0:

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

verwenden Sie .intergerValue or intValue for Int32

0
Pablo Ruan