Ich weiß, wie man es programmgesteuert macht, aber ich bin mir sicher, dass es einen eingebauten Weg gibt ...
Jede Sprache, die ich verwendet habe, verfügt über eine Standardtextdarstellung für eine Sammlung von Objekten, die ausgespuckt wird, wenn Sie versuchen, das Array mit einer Zeichenfolge zu verketten oder an eine print () -Funktion usw. zu übergeben Haben Sie eine integrierte Methode, um ein Array einfach in einen String umzuwandeln, oder müssen wir beim Stringifizieren eines Arrays immer explizit sein?
array.description
oder wenn Sie ein benutzerdefiniertes Trennzeichen möchtenarray.joined(separator: ",")
Antworten:
Wenn das Array Strings enthält, können Sie die Verwendung
String
s‘join
Methode:In Swift 2 :
Dies kann nützlich sein, wenn Sie ein bestimmtes Trennzeichen (Bindestrich, Leerzeichen, Komma usw.) verwenden möchten.
Andernfalls können Sie einfach die
description
Eigenschaft verwenden, die eine Zeichenfolgendarstellung des Arrays zurückgibt:Hinweis: Jedes Objekt, das das
Printable
Protokoll implementiert , hat einedescription
Eigenschaft. Wenn Sie dieses Protokoll in Ihre eigenen Klassen / Strukturen übernehmen, machen Sie sie auch druckfreundlichIn Swift 3
join
wird zumjoined
Beispiel[nil, "1", "2"].flatMap({$0}).joined()
joinWithSeparator
wirdjoined(separator:)
(nur für Array of Strings verfügbar)In Swift 4
quelle
"-".join(array)
ist nicht mehr verfügbar in Swift 2, Xcode 7 Beta 6, versuchen Sie es mitarray.joinWithSeparator("-")
joinWithSeparator
ist nur für ein Array von Zeichenfolgen verfügbar. Wenn Sie ein Array anderer Objekte haben, verwenden Siemap
zuerst. Zum Beispiel[1, 2, 3].map({"\($0)"}).joinWithSeparator(",")
Mit Swift 5 können Sie je nach Bedarf einen der folgenden Beispielcodes für Spielplätze auswählen, um Ihr Problem zu lösen.
Ein Array von
Character
s in ein ArrayString
ohne Trennzeichen verwandeln:Ein Array von
String
s in ein ArrayString
ohne Trennzeichen verwandeln:Verwandeln eines Arrays von
String
s in ein ArrayString
mit einem Trennzeichen zwischen Wörtern:Verwandeln eines Arrays von
String
s in ein ArrayString
mit einem Trennzeichen zwischen Zeichen:Verwandeln eines Arrays von
Float
s in ein ArrayString
mit einem Trennzeichen zwischen Zahlen:quelle
try JSONDecoder().decode([Int].self, from: Data(string.utf8))
Swift 2.0 Xcode 7.0 Beta 6 ab verwendet
joinWithSeparator()
anstelle vonjoin()
:joinWithSeparator
ist als Erweiterung auf definiertSequenceType
quelle
Swift 3
quelle
In Swift 4
quelle
Da niemand erwähnt hat, reduzieren, hier ist es:
Im Sinne der funktionalen Programmierung 🤖
quelle
[0,1,1,0].map{"\($0)"}.reduce("",+)
. 😉[0,1,1,0].map(String.init).joined()
So ändern Sie ein Array von optionalen / nicht optionalen Zeichenfolgen
Hier überspringt flatMap , compactMap die Nullwerte im Array und hängt die anderen Werte an, um eine verknüpfte Zeichenfolge zu erhalten.
quelle
Meins funktioniert auf NSMutableArray mit componentsJoinedByString
quelle
In Swift 2.2 müssen Sie Ihr Array möglicherweise in NSArray umwandeln, um componentsJoinedByString (",") zu verwenden.
quelle
Wenn Sie leere Zeichenfolgen im Array entfernen möchten.
Wenn Sie auch keine Werte filtern möchten:
quelle
Ergebnis wird >>> Mani Singh iOS Developer sein
quelle
Das Swift-Äquivalent zu dem, was Sie beschreiben, ist die String-Interpolation. Wenn Sie über Dinge wie JavaScript nachdenken
"x" + array
, ist das Äquivalent in Swift"x\(array)"
.Generell gibt es einen wichtigen Unterschied zwischen der String-Interpolation und dem
Printable
Protokoll. Nur bestimmte Klassen entsprechenPrintable
. Jede Klasse kann irgendwie stringinterpoliert werden. Dies ist hilfreich beim Schreiben allgemeiner Funktionen. Sie müssen sich nicht aufPrintable
Klassen beschränken.quelle
Sie können jedes Objekt mit der Druckfunktion drucken
oder verwenden
\(name)
, um ein Objekt in eine Zeichenfolge zu konvertieren.Beispiel:
quelle
Erstellen Sie eine Erweiterung für
Array
:quelle
Ein Trennzeichen kann für einige Sprachen wie Hebräisch oder Japanisch eine schlechte Idee sein. Versuche dies:
Für andere Datentypen:
quelle
Wenn Sie eine String-Array-Liste haben, konvertieren Sie in Int
Sie erhalten einen Zeichenfolgenwert
quelle
für jeden Elementtyp
quelle
Versuche dies:
quelle
FÜR SWIFT 3:
quelle
Wenn Sie eine Frage stellen, die ungefähr so lautet: tobeFormattedString = ["a", "b", "c"] Output = "abc"
String(tobeFormattedString)
quelle
String
hat keinen Initialisierer, der dazu in der Lage ist. Entweder verwenden Sie eine benutzerdefinierte Erweiterung oder eine Bibliothek eines Drittanbieters, oder Sie irren sich einfach.