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

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

xxxxxco_2zendxxxxxxx

person Richard Smith    schedule 24.08.2009    source источник


Ответы (3)


В идеале я бы использовал для этого регулярное выражение, возможно, что-то вроде 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" отсутствует, этот код незаметно захватит оставшуюся часть строки.

person Will Harris    schedule 24.08.2009

Это может быть интересно для вы (в частности, rangeOfString):

(NSRange)rangeOfString:(NSString *)aString

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

person Mike Dinescu    schedule 24.08.2009

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

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

person stimms    schedule 24.08.2009
comment
Ура, не знал, что это доступно. - person Richard Smith; 24.08.2009