iOS - 查找子字符串在父字符串中的所有位置

/**
 改變UILabel部分字符顏色
 */

- (void)setContentLabelColor {
    NSString *content = @"2018-08-27\n寫博客\n2018-08-27\n寫博客\n2018-08-27\n寫博客\n2018-08-27\n寫博客\n2018-08-27\n寫博客\n2018-08-27\n寫博客\n2018-08-27\n寫博客\n2018-08-27\n寫博客";
    NSMutableArray *locationArr = [self calculateSubStringCount:content str:@"\n"];
    NSMutableAttributedString *attstr = [[NSMutableAttributedString alloc] initWithString:content];
    for (int i=0; i<locationArr.count; i++) {
        if (i%2==0) {
            NSNumber *location = locationArr[i];
            [attstr addAttribute:NSForegroundColorAttributeName value:[UIColor colorWithRed:255.0f/255.0f green:45.0f/255.0f blue:81.0f/255.0f alpha:1.0f] range:NSMakeRange(location.integerValue-10, 10)];//改變\n前邊的10位字符顏色悦析,
        }
    }
    self.contentLabel.attributedText = attstr;
}
/**
 查找子字符串在父字符串中的所有位置
 @param content 父字符串
 @param tab 子字符串
 @return 返回位置數組
 */

- (NSMutableArray*)calculateSubStringCount:(NSString *)content str:(NSString *)tab {
    int location = 0;
    NSMutableArray *locationArr = [NSMutableArray new];
    NSRange range = [content rangeOfString:tab];
    if (range.location == NSNotFound){
        return locationArr;
    }
    //聲明一個臨時字符串,記錄截取之后的字符串
    NSString * subStr = content;
    while (range.location != NSNotFound) {
        if (location == 0) {
            location += range.location;
        } else {
            location += range.location + tab.length;
        }
        //記錄位置
        NSNumber *number = [NSNumber numberWithUnsignedInteger:location];
        [locationArr addObject:number];
        //每次記錄之后,把找到的字串截取掉
        subStr = [subStr substringFromIndex:range.location + range.length];
        NSLog(@"subStr %@",subStr);
        range = [subStr rangeOfString:tab];
        NSLog(@"rang %@",NSStringFromRange(range));
    }
    return locationArr;
}

摘自:https://blog.csdn.net/feiyue0823/article/details/82114430

?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子送爸,更是在濱河造成了極大的恐慌秽荞,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,884評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件堕义,死亡現場離奇詭異,居然都是意外死亡脆栋,警方通過查閱死者的電腦和手機倦卖,發(fā)現死者居然都...
    沈念sama閱讀 90,755評論 3 385
  • 文/潘曉璐 我一進店門洒擦,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人怕膛,你說我怎么就攤上這事熟嫩。” “怎么了褐捻?”我有些...
    開封第一講書人閱讀 158,369評論 0 348
  • 文/不壞的土叔 我叫張陵邦危,是天一觀的道長。 經常有香客問我舍扰,道長倦蚪,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,799評論 1 285
  • 正文 為了忘掉前任边苹,我火速辦了婚禮陵且,結果婚禮上,老公的妹妹穿的比我還像新娘个束。我一直安慰自己慕购,他們只是感情好,可當我...
    茶點故事閱讀 65,910評論 6 386
  • 文/花漫 我一把揭開白布茬底。 她就那樣靜靜地躺著沪悲,像睡著了一般。 火紅的嫁衣襯著肌膚如雪阱表。 梳的紋絲不亂的頭發(fā)上殿如,一...
    開封第一講書人閱讀 50,096評論 1 291
  • 那天,我揣著相機與錄音最爬,去河邊找鬼涉馁。 笑死,一個胖子當著我的面吹牛爱致,可吹牛的內容都是我干的烤送。 我是一名探鬼主播,決...
    沈念sama閱讀 39,159評論 3 411
  • 文/蒼蘭香墨 我猛地睜開眼糠悯,長吁一口氣:“原來是場噩夢啊……” “哼帮坚!你這毒婦竟也來了?” 一聲冷哼從身側響起互艾,我...
    開封第一講書人閱讀 37,917評論 0 268
  • 序言:老撾萬榮一對情侶失蹤试和,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后忘朝,有當地人在樹林里發(fā)現了一具尸體灰署,經...
    沈念sama閱讀 44,360評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,673評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現自己被綠了溉箕。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片晦墙。...
    茶點故事閱讀 38,814評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖肴茄,靈堂內的尸體忽然破棺而出晌畅,到底是詐尸還是另有隱情,我是刑警寧澤寡痰,帶...
    沈念sama閱讀 34,509評論 4 334
  • 正文 年R本政府宣布抗楔,位于F島的核電站,受9級特大地震影響拦坠,放射性物質發(fā)生泄漏连躏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 40,156評論 3 317
  • 文/蒙蒙 一贞滨、第九天 我趴在偏房一處隱蔽的房頂上張望入热。 院中可真熱鬧,春花似錦晓铆、人聲如沸勺良。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,882評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽尚困。三九已至,卻和暖如春链蕊,著一層夾襖步出監(jiān)牢的瞬間事甜,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,123評論 1 267
  • 我被黑心中介騙來泰國打工示弓, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留讳侨,地道東北人。 一個月前我還...
    沈念sama閱讀 46,641評論 2 362
  • 正文 我出身青樓奏属,卻偏偏與公主長得像,于是被迫代替她去往敵國和親潮峦。 傳聞我的和親對象是個殘疾皇子囱皿,可洞房花燭夜當晚...
    茶點故事閱讀 43,728評論 2 351

推薦閱讀更多精彩內容

  • 在此特此聲明:一下所有鏈接均來自互聯網,在此記錄下我的查閱學習歷程忱嘹,感謝各位原創(chuàng)作者的無私奉獻 嘱腥! 技術一點一點積...
    遠航的移動開發(fā)歷程閱讀 11,092評論 12 197
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,871評論 25 707
  • 用兩張圖告訴你,為什么你的 App 會卡頓? - Android - 掘金 Cover 有什么料拘悦? 從這篇文章中你...
    hw1212閱讀 12,704評論 2 59
  • 日本資生堂洗面奶
    蚊子的追劇日常閱讀 208評論 0 1
  • 比利時印象 2017年10月去比利時考的CPA齿兔,雖然結果不盡如人意,但初次獨自旅行還是有很多事情值得記錄。 已經過...
    Garygo閱讀 440評論 0 1