使用RegEx删除括号之间的文本

时间:2013-03-15 16:14:56

标签: ios objective-c regex string

我正在开发一个iOS应用程序,需要从字符串中删除括号中的所有文本,包括括号。示例:“查看此图像[960x640]”应为“查看此图像”

如果只有一组括号,我的代码工作正常,但如果有多个,则只删除第一组。

+ (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;
}

1 个答案:

答案 0 :(得分: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);

打印:看看这张图片和