我有一个NSString *paragraph;,里面满是N个单词。在这里我保证:
...
姓名: David
姓氏:约翰逊
..。
我要做的是从这条绳子里找到大卫和约翰逊。然而,我不知道名字是什么提前(大卫可能是约翰,克里斯,等等)
在C#中,我只需要找到以名字开头的行:然后用“”分隔符分隔单词。但我搞不懂在目标C里该怎么做
任何帮助都将不胜感激!
发布于 2012-02-15 16:03:31
我会用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);发布于 2012-02-15 15:53:19
首先,使用componentsSeparatedByString根据行拆分字符串
NSArray* lines = [paragraph compontentsSeparatedByString:@"\n"];然后,可以筛选出以名字开头的行。
NSPredicate* firstNamePredicate = [NSPredicate predicateWithFormat:@"SELF beginswith 'First Name:'"];
NSArray* filteredArray = [lines filteredArrayUsingPredicate:firstNamePredicate];然后,您可以根据空格进行拆分,并查找"Name:“token后面的单词。
https://stackoverflow.com/questions/9296500
复制相似问题