需求:在一個字符串 ASting中或許存在多個 abc字符串幌羞,將所有的abc字符串高亮顯示韵吨。
解決方案:先遍歷ASting找到所有的abc所在的位置的index夏伊,然后通過index將字符串進(jìn)行替換
相關(guān)代碼:
#pragma mark - 獲取這個字符串ASting中的所有abc的所在的index
- (NSMutableArray *)getRangeStr:(NSString *)text findText:(NSString *)findText
{
NSMutableArray *arrayRanges = [NSMutableArray arrayWithCapacity:3];
if (findText == nil && [findText isEqualToString:@""])
{
return nil;
}
NSRange rang = [text rangeOfString:findText]; //獲取第一次出現(xiàn)的range
if (rang.location != NSNotFound && rang.length != 0)
{
[arrayRanges addObject:[NSNumber numberWithInteger:rang.location]];//將第一次的加入到數(shù)組中
NSRange rang1 = {0,0};
NSInteger location = 0;
NSInteger length = 0;
for (int i = 0;; i++)
{
if (0 == i)
{
//去掉這個abc字符串
location = rang.location + rang.length;
length = text.length - rang.location - rang.length;
rang1 = NSMakeRange(location, length);
}
else
{
location = rang1.location + rang1.length;
length = text.length - rang1.location - rang1.length;
rang1 = NSMakeRange(location, length);
}
//在一個range范圍內(nèi)查找另一個字符串的range
rang1 = [text rangeOfString:findText options:NSCaseInsensitiveSearch range:rang1];
if (rang1.location == NSNotFound && rang1.length == 0)
{
break;
}
else//添加符合條件的location進(jìn)數(shù)組
[arrayRanges addObject:[NSNumber numberWithInteger:rang1.location]];
}
return arrayRanges;
}
return nil;
}