2013-04-26 89 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);