我想将其更改为名字和最后一个名字。
谢谢!
答案 0 :(得分:14)
NSString* nameStr = @"Firstname Lastname";
NSArray* firstLastStrings = [nameStr componentsSeparatedByString:@" "];
NSString* firstName = [firstLastStrings objectAtIndex:0];
NSString* lastName = [firstLastStrings objectAtIndex:1];
char lastInitialChar = [lastName characterAtIndex:0];
NSString* newNameStr = [NSString stringWithFormat:@"%@ %c.", firstName, lastInitialChar];
这可能更简洁,但我希望OP的清晰度:)因此所有临时变量和var名称。
答案 1 :(得分:4)
这样就可以了:
NSArray *components = [fullname componentsSeparatedByCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];
NSString *firstnameAndLastnameInitial = [NSString stringWithFormat:@"%@ %@.", [components objectAtIndex:0], [[components objectAtIndex:1] substringToIndex:1]];
这假设fullname是NSString的一个实例,并且包含两个由空格分隔的组件,因此您还需要检查它。
答案 2 :(得分:2)
您可以使用此代码段,首先使用componentsSeparatedByString
分隔字符串,然后再次加入它们,但只获得Lastname
的第一个字符
NSString *str = @"Firstname Lastname";
NSArray *arr = [str componentsSeparatedByString:@" "];
NSString *newString = [NSString stringWithFormat:@"%@ %@.", [arr objectAtIndex:0], [[arr objectAtIndex:1] substringToIndex:1]];
答案 3 :(得分:0)
单独获取名称的一部分数组:
NSString *sourceName = ...whatever...;
NSArray *nameComponents =
[sourceName
componentsSeparatedByCharactersInSet:
[NSCharacterSet whitespaceCharacterSet]];
然后,我想:
NSString *compactName =
[NSString stringWithFormat:@"%@ %@.",
[nameComponents objectAtIndex:0],
[[nameComponents lastObject] substringToIndex:1]];
这将跳过任何中间名,但如果只有一个名字,比如说'杰弗里',那么它将输出'杰弗里J.'。如果传入空字符串,则在尝试获取objectAtIndex:0
时会引发异常,因为该数组将为空。所以你应该检查[nameComponents count]
。