iPhoneアプリ作成(15) 文字列の検索 

文字列の検索で、個数を調べたい時があるんですが、大容量の文字列で、ちょっと苦労してしまったので、サンプルソースをメモしておきます。

◆サンプルソース

-(int)searchCount:(NSString*)str search:(NSString*)search{
    int cnt=0;
    int len = [str length];
    NSRange range;
    NSRange textRange = NSMakeRange(0,len);
    do{
        range =[str rangeOfString:search options:NSCaseInsensitiveSearch range:textRange];
        if(range.location!=NSNotFound){
            cnt++;
            textRange.location=range.location+range.length;
            textRange.length=len-textRange.location;
        }
    }while(range.location!=NSNotFound);
    return cnt;
}

(省略)

NSString *str = @"abcabcabc";
NSString *search = @"a";
NSLog(@"search count = %d",[self searchCount:str search:search]);

◆結果
2011-05-27 05:30:27.598 ListView[43663:207] search count = 3

ついでに、文字列から改行マークを調べて1行毎に取り出し、検索するサンプルも、メモっておきます

        int cnt = 0;
        NSString* lineString;
        NSRange range, subrange;
        int length;
        id pool;
        length = [str length];
        range = NSMakeRange(0, length);
        while(range.length > 0) {
            subrange = [str lineRangeForRange: NSMakeRange(range.location, 0)];
            lineString = [str substringWithRange:subrange];
            pool = [[NSAutoreleasePool alloc]init];
            if([[lineString substringToIndex:2]isEqualToString:@"</"])cnt++;
            [pool release];
            range.location = NSMaxRange(subrange);
            range.length -= subrange.length;
        }
        NSLog(@"search count = %d",cnt);

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です