2013-04-26 22 views
0

我对rangeOfString方法有疑问。例如:字符串中的字符C的位置

string = @"abcagha"; 
int e = [string rangeOfString: @"a"].location; 

这只返回第一个出现(e = 0),我如何得到他们所有的(0,3,6)?

+0

备注 - 您需要将'e'设为'NSUInteger',而不是'int'。 – rmaddy 2013-04-26 01:52:39

回答

1

您需要使用循环和rangeOfString:options:range:。每次你通过循环时,调整范围以超出前一场比赛的位置。

另一种选择是使用NSRegularExpressionmatchesInString:options:range:方法。

NSString *string = @"abcagha"; 
NSRegularExpression *exp = [NSRegularExpression regularExpressionWithPattern:@"a" options:0 error:nil]; 
NSArray *matches = [exp matchesInString:string options:0 range:NSMakeRange(0, string.length)]; 
NSMutableArray *locations = [NSMutableArray array]; 
for (NSTextCheckingResult *match in matches) { 
    [locations addObject:@(match.range.location)]; 
} 

NSLog(@"\"a\" was found in \"%@\" at: %@", string, locations);