2013-03-15 2 views
2

Я разрабатываю приложение iOS и должен удалить весь текст между скобками из строки, включая скобки. Пример: «Посмотрите на это изображение [960x640]» должно быть «Посмотрите на это изображение»Использование RegEx для удаления текста между скобками

Мой код отлично работает, если имеется только один набор скобок, но если его несколько, он удаляет только первый набор.

+ (NSString *)stringWithoutBrackets:(NSString *)input{ 
    NSString *expression = @"\\[[\\w]+\\]"; 
    while ([input rangeOfString:expression options:NSRegularExpressionSearch|NSCaseInsensitiveSearch].location!=NSNotFound){ 
     input = [input stringByReplacingOccurrencesOfString:expression withString:@"" options:NSRegularExpressionSearch|NSCaseInsensitiveSearch range:NSMakeRange(0, [input length])]; 
    } 
    return input; 
} 

ответ

3

Пробуйте использовать класс NSRegularExpression.

NSError *error; 
NSMutableString *string = [NSMutableString stringWithString:@"Look at this image [960x640] and [somethingelse]"]; 
NSRegularExpression *regularExpression = [NSRegularExpression regularExpressionWithPattern:@"\\\[[\\\w]+\\\]" options:0 error:&error]; 
[regularExpression replaceMatchesInString:string options:0 range:NSMakeRange(0, string.length) withTemplate:@""]; 

NSLog(@"String %@", string); 

Печать: Посмотрите на эту картинку и

+0

Спасибо. Как изменить это для удаления скобок, а не скобок? – Chase

+0

Используйте @ "\\\ (\\ w + \\\)" –

+0

@NickC, как я могу удалить подстроку между ** или ^^? – keshav

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