如何从全名的姓氏中只获取第一个字母?

Tom*_* B. 3 swift

为了用户的隐私,我只想从姓氏中获取第一个字母。示例:“John D.”

extension String
{
    public func getAcronyms(separator: String = "") -> String
    {
        let acronyms = self.components(separatedBy: " ").map({ String($0.characters.first!) }).joined(separator: separator);
        return acronyms;
    }
}
Run Code Online (Sandbox Code Playgroud)

Jog*_*ary 8

为了正确命名,您必须使用 PersonNameComponentsFormatter.

let name =  "Joe Singh"
let nameFormatter = PersonNameComponentsFormatter()
if let nameComps  = nameFormatter.personNameComponents(from: name), let firstLetter = nameComps.givenName?.first, let lastName = nameComps.familyName {

     let sortName = "\(firstLetter). \(lastName)"  // J. Singh
 }
Run Code Online (Sandbox Code Playgroud)

您还可以找到:

nameComps.middleName
nameComps.familyName
nameComps.nameSuffix 
nameComps.namePrefix   
Run Code Online (Sandbox Code Playgroud)

并且还可以配置你的名字的格式

Default
short
long 
abbreviated
Run Code Online (Sandbox Code Playgroud)