2013-03-15 155 views
2

我正在开发一个iOS应用程序,并且需要从括号中删除括号中的所有文本。例如:“看看这个图片[960×640]”应该是“看看这个图片”使用正则表达式删除括号之间的文本

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

+ (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 2013-03-17 19:24:15

+0

使用@“\\\(\\ w + \\\)” – 2013-03-18 04:31:59

+0

@NickC,我如何删除**或^^之间的子串? – keshav 2015-10-27 09:21:05

相关问题