【发布时间】:2017-08-17 03:23:41
【问题描述】:
如何将全名拆分为名字和姓氏。虽然我已经完成了以下代码,但考虑到fullName 的以下值是否有更好的方法?
全名可以具有以下任何值:
let fullName:String! //(No first or last name)
let fullName = "" //(No first or last name)
let fullName = "Micky" //(fName = Micky, no lName)
let fullName = "Micky Arthur" //(fName = Micky, lName = Arther)
let fullName = "Micky Arthur Test" //(fName = Micky, lName = Arther Test)
我的代码:
if let fullName = name{
let nameParts = fullName(separatedBy: " ")
if nameParts.count > 0{
let fName = nameParts[0]
var lName = ""
if nameParts.count > 1{
for i in 1 ..< nameParts.count{
lName = lName + nameParts[i] + " "
}
}
print("First Name: \(fName) Last Name: \(lName)")
}
【问题讨论】:
-
只要让 fName = parts.removeFirst(),然后 lName 将是数组的剩余部分,加入了 " "
-
请记住,像这样拆分名称的任何尝试都不适用于所有情况。只有一部分的名字可能只是一个姓氏。一个名称可能有 3 个以上的部分。名字和姓氏有多个部分。不同语言的规则可能不同。
-
@rmaddy,我明白了。有什么算法吗?
-
如果你在 iOS10 上,你可以尝试使用 NSPersonNameComponentsFormatter.personNameComponents(from: String)。 developer.apple.com/documentation/foundation/…