2

我正在开发一个 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;
}
4

1 回答 1

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);

打印:看看这张图片,然后

于 2013-03-15T16:31:25.480 回答