0
我對rangeOfString方法有疑問。例如:字符串中的字符C的位置
string = @"abcagha";
int e = [string rangeOfString: @"a"].location;
這隻返回第一個出現(e = 0),我如何得到他們所有的(0,3,6)?
我對rangeOfString方法有疑問。例如:字符串中的字符C的位置
string = @"abcagha";
int e = [string rangeOfString: @"a"].location;
這隻返回第一個出現(e = 0),我如何得到他們所有的(0,3,6)?
您需要使用循環和rangeOfString:options:range:
。每次你通過循環時,調整範圍以超出前一場比賽的位置。
另一種選擇是使用NSRegularExpression
和matchesInString: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);
備註 - 您需要將'e'設爲'NSUInteger',而不是'int'。 – rmaddy 2013-04-26 01:52:39