我是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?
}
答案 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];