3 回答

TA貢獻(xiàn)1828條經(jīng)驗(yàn) 獲得超3個(gè)贊
這未經(jīng)測試,但應(yīng)該是一個(gè)好的開始。
NSUInteger count = 0, length = [str length];
NSRange range = NSMakeRange(0, length);
while(range.location != NSNotFound)
{
range = [str rangeOfString: @"cake" options:0 range:range];
if(range.location != NSNotFound)
{
range = NSMakeRange(range.location + range.length, length - (range.location + range.length));
count++;
}
}

TA貢獻(xiàn)1880條經(jīng)驗(yàn) 獲得超4個(gè)贊
在尋找比我更好的方法,但這是另一個(gè)例子:
NSString *find = @"cake";
NSString *text = @"Cheesecake, apple cake, and cherry pie";
NSInteger strCount = [text length] - [[text stringByReplacingOccurrencesOfString:find withString:@""] length];
strCount /= [find length];
我想知道哪個(gè)更有效。
我NSString為更好的用法做了一個(gè)分類:
// NSString+CountString.m
@interface NSString (CountString)
- (NSInteger)countOccurencesOfString:(NSString*)searchString;
@end
@implementation NSString (CountString)
- (NSInteger)countOccurencesOfString:(NSString*)searchString {
NSInteger strCount = [self length] - [[self stringByReplacingOccurrencesOfString:searchString withString:@""] length];
return strCount / [searchString length];
}
@end
只需通過以下方式調(diào)用即可:
[text countOccurencesOfString:find];
可選:您可以通過定義以下內(nèi)容將其修改為不區(qū)分大小寫的搜索方式 options:
- 3 回答
- 0 關(guān)注
- 863 瀏覽
添加回答
舉報(bào)