Comment puis-je convertir rapidement un Tableau à une Chaîne de caractères?
Je sais procédure de programmation pour le faire, mais je suis sûr qu'il ya un moyen intégré...
Toutes les langues que j'ai utilisé a une sorte de défaut de la représentation textuelle d'une collection d'objets qu'il va cracher lorsque vous essayez de concaténer le Tableau avec une chaîne ou de la transmettre à une fonction print (), etc. Apple Swift de la langue ont un moyen intégré de facilement transformer un Tableau en une Chaîne de caractères, ou devons-nous toujours être explicite lorsque stringifying un tableau?
- Swift 4:
array.description
ou si vous voulez un séparateur personnaliséarray.joined(separator: ",")
Vous devez vous connecter pour publier un commentaire.
Si le tableau contient des chaînes, vous pouvez utiliser le
String
'sjoin
méthode:Dans Swift 2:
Cela peut être utile si vous voulez utiliser un séparateur (tiret, vide, virgule, etc).
Sinon, vous pouvez simplement utiliser la
description
propriété, qui renvoie une représentation sous forme de chaîne de la matrice:Conseil: n'importe quel objet la mise en œuvre de la
Printable
protocole a unedescription
de la propriété. Si vous adoptez ce protocole dans vos propres classes/struct vous rendre imprimable, ainsiDans Swift 3
join
devientjoined
, exemple[nil, "1", "2"].flatMap({$0}).joined()
joinWithSeparator
devientjoined(separator:)
(disponible uniquement pour Tableau de Chaînes de caractères)Dans Swift 4
let stringRepresentation = "-".join(array)
Peut-être que c'est lié à Swift 1.2 mise à jour."-".join(array)
n'est plus disponible en Swift 2, Xcode 7 Beta 6, essayez d'utiliserarray.joinWithSeparator("-")
joinWithSeparator
n'est disponible pour le tableau de chaînes de caractères. Si vous avez éventail d'autres objets, puis utilisezmap
premier. Par exemple,[1, 2, 3].map({"\($0)"}).joinWithSeparator(",")
Printable
a été alésé àCustomStringConvertible
debugDescription
ne suffit pas? Pour moi, il ressemble à la plupart des génériques de solution dans la mesure où il fonctionne pour tous les types de tableaux.map
ETjoinWithSeparator
, n'êtes-vous pas d'une itération dans la chaîne deux fois quand vous avez seulement besoin d'itérer une fois? Connexes: stackoverflow.com/questions/25581324/...joinWithSeparator
n'est pas disponible pour les tableaux de chaîne. Si il est essentiel d'avoir une seule itération, alors vous devrez écrire votre propre, ou de l'utilisationreduce
:[1, 2, 3, 4].reduce("") { $0 + ($0.isEmpty ? "" : ", ") + String($1)}
. Mais il n'a pas l'air très élégant. Je pense que pour les petits tableauxmap
avecjoin
doit être fine. La solution avecreduce
peut créer un trop grand nombre d'objets stringAvec Swift 5, en fonction de vos besoins, vous pouvez choisir l'une des opérations suivantes aire de Jeux des exemples de codes afin de résoudre votre problème.
Tournant d'un tableau de
Character
s dans unString
sans séparateur:Tournant d'un tableau de
String
s dans unString
sans séparateur:Tournant d'un tableau de
String
s dans unString
avec un séparateur entre les mots:Tournant d'un tableau de
String
s dans unString
avec un séparateur entre les caractères:Tournant d'un tableau de
Float
s dans unString
avec un séparateur entre les nombres:Swift 2.0 Xcode 7.0 beta 6 à partir de utilise
joinWithSeparator()
au lieu dejoin()
:joinWithSeparator
est défini comme une extension surSequenceType
Swift 3
Dans Swift 4
Depuis, personne n'a mentionné réduire, ici, c'est:
Dans l'esprit de la programmation fonctionnelle
[0,1,1,0].map{"\($0)"}.reduce("",+)
.Pour modifier un tableau d'Option/Non Optionnel Chaînes
Ici flatMap, compactMap ignore le néant des valeurs du tableau et ajoute les autres valeurs de donner un joint de chaîne.
Le mien fonctionne sur NSMutableArray avec componentsJoinedByString
Dans Swift 2.2 vous pouvez avoir à jeter votre tableau de NSArray à utiliser componentsJoinedByString(",")
Résultat sera >>> de Mani Singh Développeur iOS
Si vous voulez le fossé des chaînes vides dans le tableau.
Si vous souhaitez filtrer néant valeurs ainsi:
La Swift équivalent de ce que vous décrivez est une chaîne d'interpolation. Si vous êtes à penser à des choses comme le JavaScript de faire
"x" + array
, l'équivalent en Swift est"x\(array)"
.D'une façon générale, il existe une différence importante entre la chaîne d'interpolation vs le
Printable
protocole. Seules certaines classes sont conformes àPrintable
. Chaque classe peut être à chaîne interpolée en quelque sorte. Cette fonction est utile lors de l'écriture de fonctions génériques. Vous n'avez pas à vous limiter àPrintable
classes.Vous pouvez imprimer n'importe quel objet à l'aide de la fonction d'impression
ou de l'utilisation
\(name)
de convertir n'importe quel objet à une chaîne.Exemple:
Créer extension pour une
Array
:Séparateur peut être une mauvaise idée pour certaines langues comme l'hébreu ou le Japonais.
Essayez ceci:
Pour d'autres types de données, respectivement:
si vous avez de tableau de chaîne de la liste , puis de les convertir en Int
il vous donnera de la chaîne de valeur
pour n'importe quel type d'Élément de
Essayez Ceci:
POUR SWIFT 3:
Si vous en question est quelque chose comme ceci:
tobeFormattedString = ["a", "b", "c"]
Output = "abc"
String(tobeFormattedString)
String
n'a pas d'initialiseur capable de faire ça. Soit vous êtes en utilisant une mesure de l'extension ou de la tierce partie de la bibliothèque, ou vous êtes tout simplement manifestement erronée.