Поиск строки в строке - PullRequest
       32

Поиск строки в строке

0 голосов
/ 24 августа 2009

Кто-нибудь знает хороший эффективный способ поиска строки в строке (если она существует) в задаче c для iPhone Development, мне нужно найти часть строки между двумя словами, например здесь мне нужно найти номер рейтинга co2 в строке, где z - это значение, которое я ищу ...

xxxxxco_2zendxxxxxxx

Ответы [ 3 ]

6 голосов
/ 24 августа 2009

В идеале я бы использовал для этого регулярное выражение, возможно, что-то вроде co_2(.*?)end, поэтому я бы взглянул на RegexKitLite, так как стимулы подсказывают .

Если это не подходит, вы можете извлечь искомую строку следующим образом:

NSString* src = @"xxxxxco_2zendxxxxxxx";
NSRange startMarker = [src rangeOfString:@"co_2"];

if (startMarker.location != NSNotFound) {
    NSScanner* scanner = [NSScanner scannerWithString:src];
    [scanner setScanLocation:startMarker.location + startMarker.length];
    NSString* co2Value = @"";
    [scanner scanUpToString:@"end" intoString:&co2Value];
    NSLog(@"co_2 value is %@", co2Value);
} else {
    NSLog(@"co_2 marker not found");
}

Здесь мы ищем @"co_2", потерпев неудачу, если он не найден, а затем используем NSScanner, чтобы захватить все, начиная от этой строки до следующего вхождения @"end". Обратите внимание, что если @"end" отсутствует, этот код автоматически перехватит оставшуюся часть строки.

2 голосов
/ 24 августа 2009

Это может вас заинтересовать (в частности, функция rangeOfString ):

(NSRange)rangeOfString:(NSString *)aString

К сожалению Какао не имеет встроенной поддержки RegEx ..

0 голосов
/ 24 августа 2009

Сопоставление строк - это хорошо изученная область, особенно для алгоритмов, работающих с генетическим материалом. Вы можете проверить Искусство программирования на 10 раз больше, чем когда-либо хотели узнать о сопоставлении строк.

Большая часть этого излишня, и вы будете в порядке, используя регулярное выражение. Проверьте http://regexkit.sourceforge.net/RegexKitLite/ библиотеку регулярных выражений, которая работает на iphone.

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