447 Stimmen

Wie konvertiere ich ein Swift-Array in einen String?

Ich weiß, wie man es programmatisch macht, aber ich bin mir sicher, dass es einen eingebauten Weg gibt...

Jede Sprache, die ich benutzt habe, hat irgendeine Art von Standard-Textdarstellung für eine Sammlung von Objekten, die sie ausspuckt, wenn man versucht, das Array mit einem String zu verketten oder es an eine print() Funktion zu übergeben, usw. Hat die Swift-Sprache von Apple einen eingebauten Weg, ein Array leicht in einen String umzuwandeln, oder müssen wir immer explizit sein, wenn wir ein Array in einen String umwandeln?

16voto

garg Punkte 2455

In Swift 4

let array:[String] = ["Apple", "Birne ","Orange"]

array.joined(separator: " ")

9voto

Agent Smith Punkte 2873

Um ein Array von optionalen/nicht optionalen Strings zu ändern

//Array von optionalen Strings
let array : [String?] = ["1",nil,"2","3","4"]

//Trennungszeichen String
let separator = ","

//flatMap überspringt die nil-Werte und dann kombiniert joined die nicht-nil-Elemente mit dem Trennzeichen
let joinedString = array.flatMap{ $0 }.joined(separator: separator)

//Verwenden Sie Compact map für **Swift 4**
    let joinedString = array.compactMap{ $0 }.joined(separator: separator

print(joinedString)

Hier flatMap, compactMap überspringt die nil-Werte im Array und fügt die anderen Werte an, um einen verbundenen String zu erhalten.

8voto

Rob Punkte 389782

Heutzutage könnten wir in iOS 13+ und macOS 10.15+ ListFormatter verwenden:

let formatter = ListFormatter()

let names = ["Moe", "Larry", "Curly"]
if let string = formatter.string(from: names) {
    print(string)
}

Dadurch wird eine schöne, natürliche Sprachdarstellung der Liste erzeugt. Ein US-Benutzer würde Folgendes sehen:

Moe, Larry und Curly

Es unterstützt alle Sprachen, für die (a) Ihre App lokalisiert wurde und (b) das Gerät des Benutzers konfiguriert ist. Zum Beispiel würde ein deutscher Benutzer mit einer App, die die deutsche Lokalisierung unterstützt, Folgendes sehen:

Moe, Larry und Curly

6voto

Bilal Khan Punkte 57

Sie können dies entweder mit Schleifen erledigen. Oder indem Sie map verwenden.

Indem Sie mappen:

let array = ["eins", "zwei", "drei"]

array.map({$0}).joined(seperator: ",")

so können Sie den String im Separator ändern.

Ausgabe-> ("eins,zwei,drei")

5voto

Dilan Punkte 2597

Sie können joined() verwenden, um eine einzige String zu erhalten, wenn Sie auch ein Array von Strukturen haben.

struct Person{
    let name:String
    let contact:String
}

Sie können ganz einfach einen String mit map() & joined() erstellen

PersonList.map({"\($0.name) - \($0.contact)"}).joined(separator: " | ")

Ausgabe:

Jhon - 123 | Mark - 456 | Ben - 789

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X