我有一个NSString *paragraph;
,里面装满了N个单词。在那里,我保证有:
...
名字:大卫
姓氏:约翰逊 ...
我需要做的是找出大卫和约翰逊的字符串。但是我不知道这个名字提前是什么(大卫可能是约翰,克里斯等等。)
在C#中,我只是找到以First Name开头的行:然后用“”作为分隔符分隔单词。但是我在Objective-C中失去了如何做到这一点
非常感谢任何帮助!
答案 0 :(得分:2)
首先使用componentsSeparatedByString
NSArray* lines = [paragraph compontentsSeparatedByString:@"\n"];
然后您可以过滤掉以名字开头的行
NSPredicate* firstNamePredicate = [NSPredicate predicateWithFormat:@"SELF beginswith 'First Name:'"];
NSArray* filteredArray = [lines filteredArrayUsingPredicate:firstNamePredicate];
然后,您可以根据空格进行拆分,并在“Name:”标记后面查找单词。
答案 1 :(得分:2)
我会使用NSScanner
。像这样:
NSString *lastName;
NSString *firstName;
NSString *text = @"Foobar\nFirst Name: David\nLast Name: Johnson\nFoobaz\nBarBaz";
NSScanner *textScanner = [NSScanner scannerWithString:text];
if ([textScanner scanUpToString:@"\nFirst Name: " intoString:NULL]) {
[textScanner scanString:@"First Name: " intoString:NULL];
[textScanner scanUpToCharactersFromSet:[NSCharacterSet newlineCharacterSet] intoString:&firstName];
}
// if last name always comes after first name there's no need to do this:
[textScanner setScanLocation:0];
if ([textScanner scanUpToString:@"\nLast Name: " intoString:NULL]) {
[textScanner scanString:@"Last Name: " intoString:NULL];
[textScanner scanUpToCharactersFromSet:[NSCharacterSet newlineCharacterSet] intoString:&lastName];
}
NSLog(@"%@ %@", firstName, lastName);