我有一个下面的名字:John Fitzgerald Kennedy
。
为了获得它的首字母,我创建了一个方法:
extension String {
public var first: String {
return String(self[startIndex])
}
}
let initials = "John Fitzgerald Kennedy".componentsSeparatedByString(" ")
.reduce("") { $0 + $1.first }
输出为:JFK
我的方法(使用reduce)有没有一种很好的方法来限制那些首字母只有JK
,然后去掉中间的字母?
发布于 2019-03-28 19:23:05
如果您的目标是iOS 9或更高版本:
let formatter = PersonNameComponentsFormatter()
if let components = formatter.personNameComponents(from: name) {
formatter.style = .abbreviated
return formatter.string(from: components)
}
发布于 2016-02-09 16:04:22
按奇数索引枚举和过滤
let initials = "John Fitzgerald Kennedy".componentsSeparatedByString(" ")
.enumerate()
.filter { (index, _) -> Bool in return index % 2 == 0 }
.reduce("") { a, i in return a + i.element.first }
注意:这个不关心没有中间名或多个中间名。
https://stackoverflow.com/questions/35285978
复制相似问题