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?

830voto

Antonio Punkte 70773

Wenn das Array Strings enthält, können Sie die join-Methode von String verwenden:

var array = ["1", "2", "3"]

let stringRepresentation = "-".join(array) // "1-2-3"

In Swift 2:

var array = ["1", "2", "3"]

let stringRepresentation = array.joinWithSeparator("-") // "1-2-3"

Dies kann nützlich sein, wenn Sie einen bestimmten Trenner verwenden möchten (Bindestrich, Leerzeichen, Komma usw.).

Andernfalls können Sie einfach die description-Eigenschaft verwenden, die eine Zeichenfolgendarstellung des Arrays zurückgibt:

let stringRepresentation = [1, 2, 3].description // "[1, 2, 3]"

Hinweis: Jedes Objekt, das das Printable-Protokoll implementiert, verfügt über eine description-Eigenschaft. Wenn Sie dieses Protokoll in Ihren Klassen/Strukturen übernehmen, machen Sie sie ebenfalls druckfreundlich

In Swift 3

  • join wird zu joined, Beispiel [nil, "1", "2"].flatMap({$0}).joined()
  • joinWithSeparator wird zu joined(separator:) (nur verfügbar für Arrays von Strings)

In Swift 4

var array = ["1", "2", "3"]
array.joined(separator:"-")

178voto

Imanou Petit Punkte 83480

Mit Swift 5 können Sie je nach Bedarf einen der folgenden Beispielscodes im Playground auswählen, um Ihr Problem zu lösen.


Ein Array von Charactern in einen String ohne Trennzeichen umwandeln:

let characterArray: [Character] = ["J", "o", "h", "n"]
let string = String(characterArray)

print(string)
// gibt "John" aus

Eine Array von Stringn in einen String ohne Trennzeichen umwandeln:

let stringArray = ["Bob", "Dan", "Bryan"]
let string = stringArray.joined(separator: "")

print(string) // gibt aus: "BobDanBryan"

Eine Array von Stringn in einen String mit einem Trennzeichen zwischen Wörtern umwandeln:

let stringArray = ["Bob", "Dan", "Bryan"]
let string = stringArray.joined(separator: " ")

print(string) // gibt aus: "Bob Dan Bryan"

Eine Array von Stringn in einen String mit einem Trennzeichen zwischen Zeichen umwandeln:

let stringArray = ["car", "bike", "boat"]
let characterArray = stringArray.flatMap { $0 }
let stringArray2 = characterArray.map { String($0) }
let string = stringArray2.joined(separator: ", ")

print(string) // gibt aus: "c, a, r, b, i, k, e, b, o, a, t"

Eine Array von Floats in einen String mit einem Trennzeichen zwischen Zahlen umwandeln:

let floatArray = [12, 14.6, 35]
let stringArray = floatArray.map { String($0) }
let string = stringArray.joined(separator: "-")

print(string)
// gibt "12.0-14.6-35.0" aus

49voto

Siva Punkte 391

Swift 2.0 Xcode 7.0 Beta 6 und höher verwendet joinWithSeparator() statt join():

var array = ["1", "2", "3"]
let stringRepresentation = array.joinWithSeparator("-") // "1-2-3"

joinWithSeparator ist als Erweiterung auf SequenceType definiert

extension SequenceType where Generator.Element == String {
    /// Fügt den `separator` zwischen den Elementen von `self` ein, und verknüpft dann das Ergebnis.  Zum Beispiel:
    ///
    ///     ["foo", "bar", "baz"].joinWithSeparator("-|-") // "foo-|-bar-|-baz"
    @warn_unused_result
    public func joinWithSeparator(separator: String) -> String
}

23voto

hardikdevios Punkte 1757

Swift 3

["Ich liebe","Swift"].joined(separator:" ") // bisher joinWithSeparator(" ")

21voto

Sentry.co Punkte 4730

Da niemand reduce erwähnt hat, hier ist es:

[0, 1, 1, 0].map {"\($0)"}.reduce("") { $0 + $1 } // "0110"

Im Sinne der funktionalen Programmierung

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