ユーザー定義の姓名を含む別のView Controllerに2語の文字列があります
NSString *userName = ([self hasAttributeWithName:kContractorName] ? [self attributeWithName:kContractorName].value : [self.certificate.contractor.name uppercaseString]);
この文字列を別のView Controllerで取得するときに、名のみを抽出したい。
私はスキャナの使用について SO を調査し、ここで非常に役立つ答えを見つけました: Objective C: How to extract part of a String (eg start with '#')、そしてほとんどそこにいます。
問題は、元のコードのバリエーションを使用して 2 番目の名前を抽出することしかできないように見えることです。ファーストネームとセカンドネームの間のスペースまで文字列をスキャンすると、セカンドネームが正常に返されます。2番目の名前ではなく最初の名前を抽出するようにこれを設定する方法について、今すぐちょっとしたことをする必要があります
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
}