3 回答
TA贡献1828条经验 获得超3个赞
这未经测试,但应该是一个好的开始。
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贡献1880条经验 获得超4个赞
在寻找比我更好的方法,但这是另一个例子:
NSString *find = @"cake";
NSString *text = @"Cheesecake, apple cake, and cherry pie";
NSInteger strCount = [text length] - [[text stringByReplacingOccurrencesOfString:find withString:@""] length];
strCount /= [find length];
我想知道哪个更有效。
我NSString为更好的用法做了一个分类:
// 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
只需通过以下方式调用即可:
[text countOccurencesOfString:find];
可选:您可以通过定义以下内容将其修改为不区分大小写的搜索方式 options:
- 3 回答
- 0 关注
- 805 浏览
添加回答
举报