Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
429 views
in Technique[技术] by (71.8m points)

ios - Get the initials from a name and limit it to 2 initials

I have a the following name: John Fitzgerald Kennedy.

To get its initials, I created a method:

extension String {
    public var first: String {
        return String(self[startIndex])
    }
}

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

The output is : JFK

Is there an elegant way with my method (with reduce) to limit those initials to JK only, removing then the letter in the middle?

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

If you target iOS 9 and above:

let formatter = PersonNameComponentsFormatter()
if let components = formatter.personNameComponents(from: name) {
     formatter.style = .abbreviated
     return formatter.string(from: components)
}

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...