如何在First Name
和Last 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);