swift - 如何仅从全名的姓氏中获取第一个字母?
问题描述
为了用户的隐私,我只想从姓氏中获取第一个字母。示例:“约翰 D。”
extension String
{
public func getAcronyms(separator: String = "") -> String
{
let acronyms = self.components(separatedBy: " ").map({ String($0.characters.first!) }).joined(separator: separator);
return acronyms;
}
}
解决方案
为了正确命名,您必须使用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
}
您还可以找到:
nameComps.middleName
nameComps.familyName
nameComps.nameSuffix
nameComps.namePrefix
并且还可以配置你的名字的格式
Default
short
long
abbreviated
推荐阅读
- react-native - 在 React-Native 中控制通知的声音和振动
- nosql - pouchdb-find + $in : 没有找到匹配的索引
- angular-material - Angular 材质选项卡 - 添加自定义 html
- php - MYSQL order by left join 现有行
- powershell - 添加-PSSnapin Windows 10
- javascript - 当值有换行符时在数组中搜索字符串
- sql-server - SQL Server 中的自定义日期时间
- java - Postman 404 弹簧休息api
- python - 从目标函数 Pyomo 打印项的求解结果
- android - ViewModel without reference to View with Camera 2