首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >从名称中获取首字母,并将其限制为2个首字母

从名称中获取首字母,并将其限制为2个首字母
EN

Stack Overflow用户
提问于 2016-02-09 15:13:45
回答 2查看 9.6K关注 0票数 12

我有一个下面的名字:John Fitzgerald Kennedy

为了获得它的首字母,我创建了一个方法:

代码语言:javascript
复制
extension String {
    public var first: String {
        return String(self[startIndex])
    }
}

let initials = "John Fitzgerald Kennedy".componentsSeparatedByString(" ")
      .reduce("") { $0 + $1.first }

输出为:JFK

我的方法(使用reduce)有没有一种很好的方法来限制那些首字母只有JK,然后去掉中间的字母?

EN

回答 2

Stack Overflow用户

发布于 2019-03-28 19:23:05

如果您的目标是iOS 9或更高版本:

代码语言:javascript
复制
let formatter = PersonNameComponentsFormatter()
if let components = formatter.personNameComponents(from: name) {
     formatter.style = .abbreviated
     return formatter.string(from: components)
}
票数 30
EN

Stack Overflow用户

发布于 2016-02-09 16:04:22

按奇数索引枚举和过滤

代码语言:javascript
复制
let initials = "John Fitzgerald Kennedy".componentsSeparatedByString(" ")
    .enumerate()
    .filter { (index, _) -> Bool in return index % 2 == 0 }
    .reduce("") { a, i in return a + i.element.first }

注意:这个不关心没有中间名或多个中间名。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35285978

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档