我在另一个视图控制器中有一个两个单词的字符串,其中包含用户定义的名字和姓氏
NSString *userName = ([self hasAttributeWithName:kContractorName] ? [self attributeWithName:kContractorName].value : [self.certificate.contractor.name uppercaseString]);
在另一个视图控制器中检索此字符串时,我只想提取名字。
我研究了关于使用扫描仪的问题,并在这里找到了一个非常有用的答案:Objective C: How to extract part of a String (eg start with '#'),我几乎就在那里。
问题是我似乎只能用我对原始代码的变体提取第二个名字。我将我的字符串扫描到名字和第二个名字之间的空格,这会很好地返回第二个名字。现在只需要轻推一下如何设置它以提取名字而不是第二个
NSMutableArray *substrings = [NSMutableArray new];
NSScanner *scanner = [NSScanner scannerWithString:userName];
[scanner scanUpToString:@" " intoString:nil]; // Scan all characters before
while(![scanner isAtEnd]) {
NSString *name = nil;
[scanner scanString:@" " intoString:nil]; // Scan the character
if([scanner scanUpToString:@" " intoString:&name]) {
// If the space immediately followed the , this will be skipped
[substrings addObject:name];
}
[scanner scanUpToString:@" " intoString:nil]; // Scan all characters before next
}