Swift version: 5.10
Swift provides the ListFormatter class as a built-in way of joining lists of strings into a single string so that the last item has “and” before it, like a natural English string. So, rather than just getting “A, B, C” you actually get “A, B and C” – it’s much more suitable for user interfaces.
Here’s some example code:
let names = ["Ash", "Brock", "Misty"]
let joined1 = ListFormatter.localizedString(byJoining: names)
print(joined1)
That will print “Ash, Brock and Misty”. (No, there’s no way of asking it for the Oxford comma, so “Ash, Brock, and Misty” isn’t possible.)
If you want to join the strings without using the “and” at the end, you should just use the joined(separator:) method, like this:
let joined2 = names.joined(separator: ", ")
print(joined2)
That will print “Ash, Brock, Misty”.
SAVE 50% All our books and bundles are half price for Black Friday, so you can take your Swift knowledge further for less! Get my all-new book Everything but the Code to make more money with apps, get the Swift Power Pack to build your iOS career faster, get the Swift Platform Pack to builds apps for macOS, watchOS, and beyond, or get the Swift Plus Pack to learn Swift Testing, design patterns, and more.
Available from iOS 13.0
This is part of the Swift Knowledge Base, a free, searchable collection of solutions for common iOS questions.