Objective C字符串中的字符位置

时间:2013-04-26 01:38:27

标签: objective-c string character range

我对rangeOfString方法有疑问。例如:

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

这只返回第一次出现(e = 0),我如何获得所有这些(0,3,6)?

1 个答案:

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