0

我是objective-c的初学者。

我有以下NSMutableString stringVal=@"[abc][test][end]";

为了删除最后一个 [] 块(例如 [end]) ,我应该使用什么最好的方法?

我有这个代码:

NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"\[]" options:0 error:NULL];
    NSArray *matches = [regex matchesInString:stringVal options:0 range:NSMakeRange(0, [stringVal length])];
    for (NSTextCheckingResult *match in matches) {
        ?? what should i do here?
    }
4

2 回答 2

0

jbat是正确的,您应该修改正则表达式。在那之后,你只需要最后一场比赛,所以你可以使用

NSTextCheckingResult *match = [matches lastObject]; // Get the last match
NSRange matchRange = [match range]; // Get the position of the match segment
NSString *result = [stringVal stringByReplacingCharactersInRange:matchRange  withString:@""]; // Replace the segment by an empty string.
于 2013-10-25T14:24:48.777 回答
0

我认为你应该使用这个正则表达式模式"\\[.*?]"然后你得到三个匹配

['[abc]', '[test]', '[end]']

然后可以得到第三场比赛的范围(检查你至少有三个)

NSMutableString* stringVal= [NSMutableString stringWithString:@"[abc][test][end]"];
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"\\[.*?]" options:0 error:NULL];
NSArray *matches = [regex matchesInString:stringVal options:0 range:NSMakeRange(0, [stringVal length])];
NSTextCheckingResult* match = matches[2];

NSMutableString* substring = [[stringVal substringToIndex:match.range.location] mutableCopy];
于 2013-10-25T14:26:20.407 回答