2010-06-17 5 views
0

Mac OS 10.6, проект Cocoa, совместимость 10.4.NSString простой шаблон соответствия

(Пожалуйста, обратите внимание: мое знание регулярных выражений весьма незначительное)

мне нужно разобрать NSStrings, для сравнения случаев, когда строка содержит встроенный тег, в котором формат тега является:

[хххх]

Где xxxx являются случайными символами.

например. «Быстрая коричневая [лисица] лиса любит sox».

В приведенном выше случае мне нужно захватить строку «foxy». (Или nil, если тег не найден.)

Каждая строка будет иметь только один тег, и тег может появляться в любом месте строки или вообще не может отображаться.

Может ли кто-то помочь в этом, но не обязательно включать другую библиотеку, такую ​​как RegexKit. Спасибо за любую помощь.

+1

Принятый ответ на самом деле не вообще на всех. Вы когда-нибудь находили способ сделать это с чем-то похожим на регулярное выражение? – elsurudo

ответ

4

Я хотел бы предложить что-то вроде следующего:

NSString *subString = nil; 
NSRange range1 = [myString rangeOfString:@"["]; 
NSRange range2 = [myString rangeOfString:@"]"]; 
if ((range1.length == 1) && (range2.length == 1) && (range2.location > range1.location)) { 
    NSRange range3; 
    range3.location = range1.location+1; 
    range3.length = (range2.location - range1.location)-1; 
    subString = [myString substringWithRange:range3]; 
} 
+1

Спасибо, Крисбту! Ты - ветер под моими крыльями. :-) Просто найдена одна маленькая ошибка, хотя на строке 6. должно быть: «range3.location = range1.location + 1». Большие ура. – SirRatty

+2

Хорошее место - обновит его ради любых будущих взглядов. – chrisbtoo

Смежные вопросы