NSString поиск слова и следующего слова в NSString - PullRequest
0 голосов
/ 15 февраля 2012

У меня есть NSString *paragraph;, который заполнен N количеством слов.Там я гарантированно буду иметь:

...
Имя: Дэвид
Фамилия: Джонсон
...

Что мне нужно сделать, так это найти Дэвида и Джонсона из этой строки.Однако я не знаю, какое имя опережает время (Дэвид может быть Джоном, Крисом и т. Д.)

В C # я просто найду строку, начинающуюся с имени, а затем разделю словас "" в качестве разделителя ... Но я заблудился, как это сделать в Objective-C

Любая помощь будет принята с благодарностью!

Ответы [ 2 ]

2 голосов
/ 15 февраля 2012

Я бы использовал 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);
2 голосов
/ 15 февраля 2012

Сначала разбейте строку на основе строк, используя componentsSeparatedByString

NSArray* lines = [paragraph compontentsSeparatedByString:@"\n"];

Затем вы можете отфильтровать, какие строки начинаются с имени

NSPredicate* firstNamePredicate = [NSPredicate predicateWithFormat:@"SELF beginswith 'First Name:'"];
NSArray* filteredArray = [lines filteredArrayUsingPredicate:firstNamePredicate];

Затем вы можете разбить на основе пробелови найдите слово после токена "Name:".

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...