获取关键字在字符串中位置的数组
// 获取关键字数组位置
- (NSMutableArray *)getArrayRangeStr:(NSString *)totalText keyWordText:(NSString *)keyWordText
{
NSMutableArray *arrayRanges = [NSMutableArray arrayWithCapacity:20];
if (keyWordText == nil && [keyWordText isEqualToString:@""]) {
return nil;
}
NSRange range = [totalText rangeOfString:keyWordText];
if (range.location != NSNotFound && range.length != 0) {
[arrayRanges addObject:[NSNumber numberWithInteger:range.location]];
NSRange otherRange = {0,0};
NSInteger location = 0;
NSInteger length = 0;
for (int i = 0;; i++)
{
if (0 == i) {
location = range.location + range.length;
length = totalText.length - range.location - range.length;
otherRange = NSMakeRange(location, length);
}else{
location = otherRange.location + otherRange.length;
length = totalText.length - otherRange.location - otherRange.length;
otherRange = NSMakeRange(location, length);
}
otherRange = [totalText rangeOfString:keyWordText options:NSCaseInsensitiveSearch range:otherRange];
if (otherRange.location == NSNotFound && otherRange.length == 0) {
break;
}else
[arrayRanges addObject:[NSNumber numberWithInteger:otherRange.location]];
}
return arrayRanges;
}
return nil;
}
测试
NSString *keywordStr = @"测试关键字计算机的位置在哪里,标注计算机的位置为红色,测试关键字计算机的位置在哪里,标注计算机的位置为红色";
NSString *keyword = @"计算机";
NSMutableArray *arr = [self getArrayRangeStr:keywordStr keyWordText:keyword];
NSMutableAttributedString *foreText = [[NSMutableAttributedString alloc]initWithString:keywordStr];
for (int i = 0; i < arr.count; i++) {
NSNumber * number = arr[i];
NSInteger rangeI = [number integerValue];
[foreText addAttribute:NSForegroundColorAttributeName value:[UIColor redColor] range:NSMakeRange(rangeI, keyword.length)];
}
self.titleLb.attributeText = foreText;
效果如图