Ich würde gerne wissen, wie ich einen String in einem Int-Array in Swift konvertieren kann. In Java habe ich das immer so gemacht:
String myString = "123456789";
int[] myArray = new int[myString.lenght()];
for(int i=0;i<myArray.lenght;i++){
myArray[i] = Integer.parseInt(myString.charAt(i));
}
Danke an alle für die Hilfe!
let str = "123456789"
let intArray = map(str) { String($0).toInt() ?? 0 }
map()
durchläuft Character
s in str
String($0)
konvertiert Character
in String
.toInt()
konvertiert String
in Int
. Wenn dies nicht der Fall ist (??
), verwenden Sie 0
. Wenn Sie die for
-Schleife bevorzugen, versuchen Sie Folgendes:
let str = "123456789"
var intArray: [Int] = []
for chr in str {
intArray.append(String(chr).toInt() ?? 0)
}
ODER, wenn Sie Indizes der String
durchlaufen möchten:
let str = "123456789"
var intArray: [Int] = []
for i in indices(str) {
intArray.append(String(str[i]).toInt() ?? 0)
}
Sie können flatMap verwenden, um die Zeichen in eine Zeichenfolge umzuwandeln und die Zeichenketten in eine Ganzzahl umzuwandeln:
Swift 2 oder 3
let string = "123456789"
let digits = string.characters.flatMap{Int(String($0))}
print(digits) // [1, 2, 3, 4, 5, 6, 7, 8, 9]"
Swift 4
let string = "123456789"
let digits = string.flatMap{Int(String($0))}
print(digits) // [1, 2, 3, 4, 5, 6, 7, 8, 9]"
Swift 4.1
let digits = string.compactMap{Int(String($0))}
@rintaros Antwort ist korrekt, aber ich wollte nur hinzufügen, dass Sie reduce
verwenden können, um alle Zeichen auszusondern, die nicht in ein Int
-Zeichen konvertiert werden können. In diesem Fall wird sogar eine Warnmeldung angezeigt:
let str = "123456789"
let intArray = reduce(str, [Int]()) { (var array: [Int], char: Character) -> [Int] in
if let i = String(char).toInt() {
array.append(i)
} else {
println("Warning: could not convert character \(char) to an integer")
}
return array
}
Die Vorteile sind:
intArray
Nullen enthält, werden Sie wissen, dass str
einen 0
enthielt, und nicht irgendein anderes Zeichen, das sich in eine Null verwandelteInt
-Charakter gibt, der möglicherweise die Dinge vermasselt.Swift 3 Update:
@appzYourLife: Das ist die richtige toInt()
-Methode für String in Swift 3 nicht mehr verfügbar. Als Alternative können Sie Folgendes tun:
intArray.append(Int(String(chr)) ?? 0)
Das Einschließen in Int()
konvertiert es in Int.
Swift 3
Int Array zu String
let arjun = [1,32,45,5]
print(self.get_numbers(array: arjun))
func get_numbers(array:[Int]) -> String {
let stringArray = array.flatMap { String(describing: $0) }
return stringArray.joined(separator: ",")
Zeichenfolge in Int Array
let arjun = "1,32,45,5"
print(self.get_numbers(stringtext: arjun))
func get_numbers(stringtext:String) -> [Int] {
let StringRecordedArr = stringtext.components(separatedBy: ",")
return StringRecordedArr.map { Int($0)!}
}
var myString = "123456789"
var myArray:[Int] = []
for index in 0..<countElements(myString) {
var myChar = myString[advance(myString.startIndex, index)]
myArray.append(String(myChar).toInt()!)
}
println(myArray) // [1, 2, 3, 4, 5, 6, 7, 8, 9]"
Um die iterator
von der char
auf eine string
zu zeigen, können Sie advance
verwenden.
Die Methode zum Konvertieren von string
in int
in Swift ist toInt()
String
in separate String
-Instanzen auf: components(separatedBy separator: String) -> [String]
Referenz: Gibt ein Array zurück, das Teilstrings aus dem String enthält, die durch ein angegebenes Trennzeichen geteilt wurden.
flatMap
Array
-Methode, um die nil
-Koaleszenz während der Konvertierung in Int
zu umgehen.Referenz: Gibt ein Array zurück, das die Nicht-Null-Ergebnisse des Aufrufs der angegebenen Transformation mit jedem Element dieser Sequenz enthält.
Implementierung
let string = "123456789"
let intArray = string.components(separatedBy: "").flatMap { Int($0) }