如何使用NSRegularExpression更改字符串

时间:2013-10-25 14:14:14

标签: objective-c nsregularexpression nsmutablestring

我是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?
    }

2 个答案:

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

答案 1 :(得分: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];