2016-09-14 3 views
1

Как правило, как присоединиться к массиву укусов, чтобы последний разделитель отличался от остальных?Присоединитесь к массиву строк с другим конечным разделителем

В частности: как приложение iOS Messages создает имя группы по умолчанию, которое представляет собой список имен контактов?

Пример

class User { 
    var name: String 

    init(name: String) { 
     self.name = name 
    } 
} 

let users = [ 
    User(name: "Matthew"), 
    User(name: "Mark"), 
    User(name: "Luke"), 
    User(name: "John") 
] 

users.list(" & ") { $0.name } // => "Matthew, Mark, Luke & John" 

РНР

Рубин (на рельсы)

Python

C# (Linq)

ответ

3

Используя класс, определенный в этом вопросе вы могли бы сделать что-то вроде этого:

let names = users.map { $0.name } 
let suffix = names.suffix(2) 
let joined = (names.dropLast(suffix.count) + [suffix.joinWithSeparator(" & ")]).joinWithSeparator(", ") 

print(joined) // prints Matthew, Mark, Luke & John 
Смежные вопросы