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
Swift 2.0 Sie können Integer mit dem Konstruktor initialisieren
var stringNumber = "1234"
var numberFromString = Int(stringNumber)
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.
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"
}
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
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()
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.
Sie können von String zu NSString überbrücken und von CInt nach Int wie folgt konvertieren:
var myint: Int = Int(stringNumb.bridgeToObjectiveC().intValue)
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
}
}
}
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
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.
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
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