Comment convertir une Chaîne de caractères (numérique) dans un tableau Int en Swift
Je voudrais savoir comment puis-je convertir une Chaîne en un tableau Int en Swift.
En Java, j'ai toujours fait comme ceci:
String myString = "123456789";
int[] myArray = new int[myString.lenght()];
for(int i=0;i<myArray.lenght;i++){
myArray[i] = Integer.parseInt(myString.charAt(i));
}
Merci à tous pour aider!
Je suis en retrait de la
java
tag, puisque cette question n'est pas vraiment à propos de Java.
OriginalL'auteur t0re199 | 2015-02-19
Vous devez vous connecter pour publier un commentaire.
map()
itèreCharacter
s dansstr
String($0)
convertitCharacter
àString
.toInt()
convertitString
àInt
. En cas d'échec(??
), l'utilisation0
.Si vous préférez
for
boucle, essayez:OU, si vous souhaitez effectuer une itération sur les indices de la
String
:toInt()
n'est plus disponible dansString
dans Swift 2.x.OriginalL'auteur rintaro
Vous pouvez utiliser flatMap pour convertir les caractères en une chaîne de caractères et de contraindre les chaînes de caractères en un entier:
Swift 2 ou 3
Swift 4
Swift 4.1
.flatMap
pour ce cas d'utilisation. Utilisation.compactMap
à la place:let digits = string.compactMap{Int(String($0))}
OriginalL'auteur Leo Dabus
@rintaro réponse est bonne, mais je voulais juste ajouter que vous pouvez utiliser
reduce
d'éliminer les éventuels caractères qui ne peuvent pas être convertis à unInt
, et même afficher un message d'avertissement si cela se passe:Les avantages sont:
intArray
contient des zéros, vous savez qu'il y a un0
dansstr
, et pas un autre caractère qui s'est transformé en un zéroInt
personnage qui est peut-être bousiller les choses.OriginalL'auteur Aaron Rasmussen
Pour obtenir le
iterator
pointant vers unchar
de lastring
vous pouvez utiliseradvance
La méthode pour convertir
string
àint
dans Swift esttoInt()
advance
plus et plus comme ça, c'est une mauvaise idée, puisque vous êtes sur le programme étape par le biais de la chaîne depuis le début à chaque fois.OriginalL'auteur Jérôme Leducq
Swift 3 mise à jour:
@appzYourLife : C'est correct
toInt()
méthode est plus disponible à la Chaîne dans Swift 3.Comme une alternative de ce que vous pouvez faire est de :
L'enfermer dans
Int()
convertit Int.OriginalL'auteur iCode
Swift 3
Int tableau de Chaîne de
String en Int Tableau
OriginalL'auteur Arjun Yadav
Swift 3: Approche Fonctionnelle
String
en séparerString
instances à l'aide de:components(separatedBy separator: String) -> [String]
flatMap
Array
méthode pour contourner lenil
coalescence lors de la conversionInt
Mise en œuvre
.flatMap
pour ce cas d'utilisation. Au lieu de cela, utiliser.compactMap
:let intArray = string.components(separatedBy: "").compactMap { Int($0) }
c'est faux, il en résulterait un tableau à un seul élément de la même valeur de l'entrée
[123456789]
. La première méthodecomponents(separatedBy: "")
seraient le résultat d'un seul élément de chaîne["123456789"]
J'ai simplement remplacé le obsolète
.flatMap
avec la nouvelle.compactMap
, @LeoDabus. Les deux résultats sont les mêmes. Imprimé en tant que Xcode de la console de débogage:[123456789]
et[123456789]
. Notez que je ne suis pas à même de juger si le résultat est approprié pour la question d'origine, mais simplement de remarquer pour quelqu'un qui vient ici que.flatMap
a été dépréciée en faveur de.compactMap
dans les cas où l'on tente de parvenir à un résultat qui éliminenil
valeurs.OriginalL'auteur Fabijan Bajo