在名字和姓氏中拆分全名

  • 本文关键字:拆分 全名 objective-c
  • 更新时间 :
  • 英文 :


如何在First NameLast Name中拆分全名。

NSString *fullName = @"John Luke Morite";
NSString *firstName = [[fullName componentsSeparatedByString:@" "] objectAtIndex:0]; //John
NSString *lastName = ?? // Luke Morite

更好的方法:

NSString *fullName = @"John Luke Morite";
NSRange range = [fullName rangeOfString:@" "];
NSString *fname = [fullName substringToIndex:range.location];
NSString *lname = [fullName substringFromIndex:range.location+1];
NSString *fullName = @"John Luke Morite";
NSString *firstName = [[string componentsSeparatedByString:@" "] objectAtIndex:0]; //John
NSString *lastName = [fullName substringFromIndex:[fullName rangeOfString:firstName].length + 1];

这里的策略是寻找第一个空格,并取剩下的字符

NSString *fullName = @"John Luke Morite";
NSRange range = [fullName rangeOfString:@" "];
NSString *lastName = [fullName substringFromIndex:range.length+1];

您也可以使用 split 来实现此目的:

   let text = "Stack Overflow Z"
   var fullNameArr = text.split(separator: " ", maxSplits: 1, omittingEmptySubsequences: true)
   let firstName: String = String(fullNameArr.first ?? "")
   let lastName: String =  fullNameArr.count > 0 ? String(fullNameArr[1]) : ""

其他答案中的所有代码在不同情况下都会崩溃。我的方法很混乱,但可以正常工作而不会崩溃(Objective-C):

NSString *fullName = @"Mehdi Mousavi Bakhtiari";
NSString *firstName = @"";
NSString *lastName = @"";
if (fullName != nil && fullName.length > 0) {
   NSArray<NSString *> *parts = [fullName componentsSeparatedByString:@" "];
   if (parts != nil && parts.count > 0) {
         firstName = [parts objectAtIndex:0];
         if (parts.count > 1)
            for (int i = 1; i < parts.count; i++) {
               lastName = [NSString stringWithFormat:@"%@ %@", lastName, (NSString *)[parts objectAtIndex:i]];
            }
   }
}
if (lastName != nil && lastName.length > 0)
   lastName = [lastName stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];
NSLog(@"first name: %@", firstName);
NSLog(@"middle name and last name: %@", lastName);

最新更新