2

iOS アプリを開発しており、角かっこを含む文字列から角かっこの間のすべてのテキストを削除する必要があります。例: 「この画像 [960x640] を見てください」は「この画像を見てください」である必要があります。

私のコードは、括弧のセットが 1 つしかない場合は正常に動作しますが、複数ある場合は最初のセットのみが削除されます。

+ (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 に答える