rangeOfString メソッドについて質問があります。例えば:
string = @"abcagha";
int e = [string rangeOfString: @"a"].location;
これは最初に出現したもの (e = 0) のみを返します。それらすべて (0,3,6) を取得するにはどうすればよいですか?
rangeOfString メソッドについて質問があります。例えば:
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);