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