当前位置: 代码迷 >> 综合 >> NSString 内查找多个重复指定子字符串的个数,位置
  详细解决方案

NSString 内查找多个重复指定子字符串的个数,位置

热度:13   发布时间:2023-12-17 02:53:27.0

字符串中查找单个不重复子字符串有"rangeOfString"这个方法可以找到,但是多个重复的字符串,就坑爹了,没有现成的方法,只有设置options进行有限的区分
总结两个方法:一个获取个数.一个获取位置

1 获取重复子字符串个数
//利用替换先把重复元素替换掉,再根据length长度做判断
- (NSInteger )getDuplicateSubStrCountInCompleteStr:(NSString *)completeStr withSubStr:(NSString *)subStr
{NSInteger subStrCount = [completeStr length] - [[completeStr stringByReplacingOccurrencesOfString:subStr withString:@""] length];return subStrCount / [subStr length];
}
2 获取重复子字符串位置
//利用切分先得数组,再根据索引计算
- (NSMutableArray *)getDuplicateSubStrLocInCompleteStr:(NSString *)completeStr withSubStr:(NSString *)subStr
{NSArray * separatedStrArr = [completeStr componentsSeparatedByString:subStr];NSMutableArray * locMuArr = [[NSMutableArray alloc]init];NSInteger index = 0;for (NSInteger i = 0; i<separatedStrArr.count-1; i++) {NSString * separatedStr = separatedStrArr[i];index = index + separatedStr.length;NSNumber * loc_num = [NSNumber numberWithInteger:index];[locMuArr addObject:loc_num];index = index+subStr.length;}return locMuArr;
}

当然,也可以把这个两个方法写成NSString的Category方便使用
搞定,还有别的方法可以实现,这里只写了其中一种方法,欢迎大家指正