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);