将全名拆分为名字和姓氏是一个无法解决的问题,因为names are really, really complicated。因此,我的模型代表作者和书籍的其他贡献者,包括name
和filingName
字段,其中filingName
通常应为"最后,第一&#34 ; (西方名字)。
但是,为了方便我的用户,我希望当用户填写常规名称时,让我的应用程序对文件名称进行合理猜测。当然,如果猜测错误,用户可以编辑归档名称,但如果我猜对了,我会将它们保存一段时间。目前我只是假设最后一个以空格分隔的单词"是姓氏,并用逗号将其移到前面:
NSMutableArray * parts = [self.name componentsSeparatedByCharactersInSet:NSCharacterSet.whitespaceCharacterSet].mutableCopy;
if(parts.count < 2) {
return self.name;
}
NSString * lastName = parts.lastObject;
[parts removeLastObject];
return [NSString stringWithFormat:@"%@, %@", lastName, [parts componentsJoinedByString:@" "]];
我可以立即想到一个案例,这会让我误入歧途:后缀如&#34; Jr&#34;。但我确定还有很多其他人。有没有什么好的资源可以解释常见的命名注意事项,或解决这个问题的代码的好例子,我可以用它来改进我的启发式?我在Mac上使用Objective-C(如果框架中有一些模糊不清的角落可以帮助我),但我愿意学习用任何语言编写的代码。
这类问题有been asked before,但大多数答案要么关注拆分字符串的机制,要么转变为&#34;设计不同的模型&#34 34 ;.我以不同的方式设计我的模型;我只是想让电脑完成大部分用户的工作。为他们工作。
正如我之前所说,此代码主要处理作者和其他书籍撰稿人的姓名。其中一些具体后果包括:
name
中应该只有一个名称,因为我支持将多位作者附加到一本书中。答案 0 :(得分:0)
当您构建软件系统时,总会存在消耗大量时间的严重问题。我不会因为没有全球范围的命名约定或规则而受到限制。我不认为要求用户输入他/她的归档名称会很麻烦,因为他们只会一次。
这似乎是恕我直言的更容易的解决方案。