iOS 正則表達(dá)(一) <a>標(biāo)簽的處理

首先你需要第三方RegexKitLite以及YYKit

1. 我們先來說說RegexKitLite的導(dǎo)入

你可以在github上下載并導(dǎo)入你的項(xiàng)目,也可以用cocopods導(dǎo)入娃肿。

  • 使用cocopods


    這樣相對來說比較簡單胁赢,不用管其他配置了
  • 從github下載 RegexKitLite導(dǎo)入你的項(xiàng)目中痕支,然后你需要配置以下:
    Build Phases需要配置

2. 至于YYKit啃勉,同樣你可以選擇手動導(dǎo)入或者cocopods第三方管理工具
  • 使用cocopods
  1. 在podfile中添加 pod ‘YYKit’
  2. 執(zhí)行pod install
  • 手動安裝
  1. 下載YYKit并將YYKit中源文件拖放如你的工程
  • 為 NSObject+YYAddForARC.m 和 NSThread+YYAdd.m 添加編譯參數(shù) -fno-objc-arc
  • 鏈接以下 frameworks:
  • UIKit
  • CoreFoundation
  • CoreText
  • CoreGraphics
  • CoreImage
  • QuartzCore
  • ImageIO
  • AssetsLibrary
  • Accelerate
  • MobileCoreServices
  • SystemConfiguration
  • sqlite3
  • libz

接下來就是我們需要做的就是代碼搞起來

1. 導(dǎo)入頭文件
#import "RegexKitLite.h"
#import "YYKit.h"
2. 主要代碼
NSString *regex_http = @"<a href=(?:.*?)>(.*?)<\\/a>";
    NSString *labelText = @"<a href=\"http://www.baidu.com\" target=\"_blank\">快件查詢頁面</a>";
    NSArray *array_http = [labelText arrayOfCaptureComponentsMatchedByRegex:regex_http];
    
    // 高亮狀態(tài)的背景
    YYTextBorder *highlightBorder = [YYTextBorder new];
    highlightBorder.insets = UIEdgeInsetsMake(-2, 0, -2, 0);
    highlightBorder.cornerRadius = 3;
    highlightBorder.fillColor = [UIColor lightGrayColor];
    
    if ([array_http count]) {
        // 先把html a標(biāo)簽都給去掉
        labelText = [labelText stringByReplacingOccurrencesOfString:@"<a href=(.*?)>" withString:@"" options:NSRegularExpressionSearch range:NSMakeRange (0, labelText.length)];
        labelText = [labelText stringByReplacingOccurrencesOfString:@"<\\/a>" withString:@"" options:NSRegularExpressionSearch range:NSMakeRange (0, labelText.length)];
        NSLog(@"labelText === %@", labelText);
        
        NSMutableAttributedString *aStr = [[NSMutableAttributedString alloc] initWithString:labelText];
        aStr.font = [UIFont systemFontOfSize:14];
        aStr.color = [UIColor blackColor];
        for (NSArray *array in array_http) {
            // 獲得鏈接顯示文字的range埠巨,用來設(shè)置下劃線
            NSRange range = [labelText rangeOfString:array[1]];
            [aStr setColor:[UIColor blueColor] range:range];
            
            // 高亮狀態(tài)
            YYTextHighlight *highlight = [YYTextHighlight new];
            [highlight setBackgroundBorder:highlightBorder];
            // 數(shù)據(jù)信息义辕,用于稍后用戶點(diǎn)擊
            NSString *linkStr = [array.firstObject componentsSeparatedByString:@"\""][1];
            highlight.userInfo = @{@"linkUrl": linkStr};
            [aStr setTextHighlight:highlight range:range];
        }
        
        _herfLabel.attributedText = aStr;
    }
    
    _herfLabel.highlightTapAction = ^(UIView * _Nonnull containerView, NSAttributedString * _Nonnull text, NSRange range, CGRect rect){
        text = [text attributedSubstringFromRange:range];
        NSDictionary *dic = text.attributes;
        YYTextHighlight *user = [dic valueForKey:@"YYTextHighlight"];
        NSString *linkText = [user.userInfo valueForKey:@"linkUrl"];
        NSLog(@"獲取的linkText:%@  在這里可以跳轉(zhuǎn)界面", linkText);
    };

提示:_herfLabel是YYLabel套像,不是普通的UILabel

最后,下次有時(shí)間會附上demo终息。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末夺巩,一起剝皮案震驚了整個(gè)濱河市贞让,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌柳譬,老刑警劉巖喳张,帶你破解...
    沈念sama閱讀 217,185評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異美澳,居然都是意外死亡销部,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,652評論 3 393
  • 文/潘曉璐 我一進(jìn)店門制跟,熙熙樓的掌柜王于貴愁眉苦臉地迎上來舅桩,“玉大人,你說我怎么就攤上這事雨膨±尢危” “怎么了?”我有些...
    開封第一講書人閱讀 163,524評論 0 353
  • 文/不壞的土叔 我叫張陵聊记,是天一觀的道長撒妈。 經(jīng)常有香客問我,道長排监,這世上最難降的妖魔是什么狰右? 我笑而不...
    開封第一講書人閱讀 58,339評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮舆床,結(jié)果婚禮上棋蚌,老公的妹妹穿的比我還像新娘。我一直安慰自己挨队,他們只是感情好附鸽,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,387評論 6 391
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著瞒瘸,像睡著了一般坷备。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上情臭,一...
    開封第一講書人閱讀 51,287評論 1 301
  • 那天省撑,我揣著相機(jī)與錄音,去河邊找鬼俯在。 笑死竟秫,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的跷乐。 我是一名探鬼主播肥败,決...
    沈念sama閱讀 40,130評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了馒稍?” 一聲冷哼從身側(cè)響起皿哨,我...
    開封第一講書人閱讀 38,985評論 0 275
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎纽谒,沒想到半個(gè)月后证膨,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,420評論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡鼓黔,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,617評論 3 334
  • 正文 我和宋清朗相戀三年央勒,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片澳化。...
    茶點(diǎn)故事閱讀 39,779評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡崔步,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出缎谷,到底是詐尸還是另有隱情井濒,我是刑警寧澤,帶...
    沈念sama閱讀 35,477評論 5 345
  • 正文 年R本政府宣布慎陵,位于F島的核電站眼虱,受9級特大地震影響喻奥,放射性物質(zhì)發(fā)生泄漏席纽。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,088評論 3 328
  • 文/蒙蒙 一撞蚕、第九天 我趴在偏房一處隱蔽的房頂上張望润梯。 院中可真熱鬧,春花似錦甥厦、人聲如沸纺铭。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,716評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽舶赔。三九已至,卻和暖如春谦秧,著一層夾襖步出監(jiān)牢的瞬間竟纳,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,857評論 1 269
  • 我被黑心中介騙來泰國打工疚鲤, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留锥累,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,876評論 2 370
  • 正文 我出身青樓集歇,卻偏偏與公主長得像桶略,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,700評論 2 354

推薦閱讀更多精彩內(nèi)容

  • 初次看到s的時(shí)候,他一身牛仔褲外加風(fēng)大衣蹬挺,時(shí)下流行的殺馬特發(fā)型瞬間讓我這個(gè)土生土長的鄉(xiāng)下孩子感覺無法接受维贺,可時(shí)...
    淺淺遇閱讀 455評論 0 0
  • 小轎車在茫茫的霾中穿過 車輪在積水的柏油路 濺起一溜白霧 蝸牛般奔馳 對面都是陌生人 一米二的距離 我看不清你的臉...
    老雷閱讀 113評論 0 1
  • RoiceZ閱讀 197評論 2 8
  • 現(xiàn)在溯泣,理財(cái)?shù)姆椒ê烷T檻條件太多了,這讓剛剛接觸理財(cái)?shù)男率质掷_榕茧,那么垃沦,新手如何投資理財(cái)?融資易小編就來介紹下用押。 ...
    8846482d58c9閱讀 217評論 0 0