Поиск подстрок (NSString) - PullRequest
2 голосов
/ 29 июня 2011

Как лучше всего искать подстроку, заключенную в ## $$.Например, у меня есть такой текст:

Lorem ## ipsum $$ dolor sit amet, ## consectetur $$ adipisicing elit, sed do eiusmodВременные иски в течение всего рабочего дня.Ut enim ad minim veniam, quis nostrud упражнение ullamco labouris nisi ut aliquip ex ea кассовый следствие.

Я хочу получить слова ipsum и consectetur .Я знаю, что могу использовать метод rangefsubstring NSString, но есть ли лучший способ сделать это?В основном, найти строку, заключенную в 2 другие строки?Спасибо

Ответы [ 2 ]

3 голосов
/ 29 июня 2011

Вы можете использовать NSRegularExpression (предупреждение: только для iOS4 +), чтобы сопоставить ваши подстроки, используя шаблон RegEx (как обычно @"##.*$$").

Тогда действительно легко итерировать по полученным совпадениям (я предпочитаю использовать блок перечисления, так как мы не iOS4: -)):

NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"##(.*)$$" options:NSRegularExpressionCaseInsensitive error:nil];
[regex enumerateMatchesInString:yourString options:0 range:NSMakeRange(0, [yourString length]) usingBlock:
    ^(NSTextCheckingResult *match, NSMatchingFlags flags, BOOL *stop) {
        NSRange range = [match rangeAtIndex:1]; // range of string in first parens
        NSString* oneWord = [yourString substringWithRange:range];
    }
];

Примечание. Если вам требуется поддержка версий до iOS4, вы можете проверить NSPredicate, но он гораздо менее гибок (... и я полагаю, что для версий до iOS4, используя rangeOfSubstring, вероятно, лучший выбор в любом случае, так как NSPredicate сообщит вам только о совпадении строки, но не позволит получить подстроку ...)

0 голосов
/ 29 июня 2011

Перебирайте строковые символы, ищите «##», а после этого ищите ближайшие «$$».

...