猿问

NSString中子字符串出现的次数?

如何获得NSString(例如,@"cake")在较大的NSString(例如,@"Cheesecake, apple cake, and cherry pie")中出现的次数?

我需要在很多字符串上执行此操作,因此无论使用哪种方法都必须相对较快。

谢谢!


守着一只汪
浏览 806回答 3
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++;   }}

慕村225694

在寻找比我更好的方法,但这是另一个例子: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:
随时随地看视频慕课网APP
我要回答