2014-07-13 11 views
49

W Objective-C możemy wywołać componentsJoinedByString, aby utworzyć ciąg znaków z każdym elementem tablicy oddzielonym przez dostarczony ciąg znaków. Chociaż Swift ma componentsSeparatedByString sposób na ciąg, nie wydaje się być odwrotność tego na tablicy:Swiftowy odpowiednik Array.componentsJoinedByString?

'Array<String>' does not have a member named 'componentsJoinedByString' 

Co jest odwrotnością componentsSeparatedByString w Swift?

Odpowiedz

113

Swift 3.0:

podobne do Swift 2.0, ale zmiana nazwy API został przemianowany joinWithSeparator do joined(separator:).

let joinedString = ["1", "2", "3", "4", "5"].joined(separator: ", ") 

// joinedString: String = "1, 2, 3, 4, 5" 

Zobacz Sequence.join(separator:) aby uzyskać więcej informacji.

Swift 2.0:

Można użyć metody joinWithSeparator na SequenceType dołączyć tablicę łańcuchów z separatorem strun.

let joinedString = ["1", "2", "3", "4", "5"].joinWithSeparator(", ") 

// joinedString: String = "1, 2, 3, 4, 5" 

Aby uzyskać więcej informacji, patrz SequenceType.joinWithSeparator(_:).

Swift 1.0:

Można używać standardowych funkcji biblioteki join na String dołączyć tablicę ciągów sznurkiem.

let joinedString = ", ".join(["1", "2", "3", "4", "5"]) 

// joinedString: String = "1, 2, 3, 4, 5" 

Lub jeśli wolisz, możesz użyć globalnej funkcji standardowej biblioteki:

let joinedString = join(", ", ["1", "2", "3", "4", "5"]) 

// joinedString: String = "1, 2, 3, 4, 5" 
+0

Dla symetrii zauważyłem też, że istnieje globalna funkcja "dzielenia", chociaż wydaje się nieco kłopotliwa w użyciu. W ogóle nie ma też metody 'split' na' Array', którą widzę niestety. – devios1

7

SkładnikiJoinedByString jest nadal dostępny w NSArray, ale nie w Swift Arrays. Możesz jednak mostkować tam iz powrotem.

var nsarr = ["a", "b", "c"] as NSArray 
var str = nsarr.componentsJoinedByString(",") 
+0

Swift tablica componentsSeparatedByString działa na mnie w plac zabaw z Xcode Beta 3 bez pomostowych. Czy możesz tego spróbować? var commaSeperatedStr = "1, 2, 3, 4, 5" var arrayFromCommaSeperatedStr: Array = commaSeperatedStr.componentsSeparatedByString (","). Dlaczego nie przeciwieństwo nie może tego nie zrozumieć. – mohacs

+0

tak, to jest ważne. pytanie brzmiało zupełnie przeciwnie: – connor

+0

Wchodząc wcześniej, pisałem, dlaczego nie jest przeciwieństwo. – mohacs