从两个单词字符串中提取一个单词

JSA*_*986 1 cocoa-touch objective-c ios

我在另一个视图控制器中有一个包含用户定义的名字和姓氏的双字符串

NSString *userName = ([self hasAttributeWithName:kContractorName] ? [self attributeWithName:kContractorName].value : [self.certificate.contractor.name uppercaseString]);
Run Code Online (Sandbox Code Playgroud)

在另一个视图控制器中检索此字符串时,我想只提取第一个名称.

我研究了使用扫描仪的SO,并在这里找到了一个非常有用的答案:目标C:如何提取字符串的一部分(例如以'#'开头),并且我几乎就在那里.

问题是我只能用原始代码的变体来提取第二个名字.我将我的字符串扫描到第一个和第二个名称之间的空格,这将返回第二个名称.现在只需要轻推一下如何设置它来提取名字而不是第二个名字

    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 
    }
Run Code Online (Sandbox Code Playgroud)

Ale*_*kov 5

更好用NSString的componentsSeparatedByString方法:

NSString* firstName = [userName componentsSeparatedByString:@" "][0];
Run Code Online (Sandbox Code Playgroud)