【发布时间】:2013-10-06 19:39:07
【问题描述】:
我在另一个视图控制器中有一个包含用户定义的名字和姓氏的两个单词字符串
NSString *userName = ([self hasAttributeWithName:kContractorName] ? [self attributeWithName:kContractorName].value : [self.certificate.contractor.name uppercaseString]);
在另一个视图控制器中检索此字符串时,我想只提取名字。
我研究了有关使用扫描仪的 SO,并在这里找到了一个非常有用的答案:Objective C: How to extract part of a String (e.g. 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
}
【问题讨论】:
-
你确定没有名字可以包含空格字符吗?
标签: ios objective-c cocoa-touch