iOS 去掉html標簽 留下原本的字符串


  做開發有的時候會遇到服務器返回的數據是html的,我們可以選擇直接用webview來加載的方式去處理,當然這個方法不適用所有場景,通常我們會選擇把沒有必要的html標簽去掉留下需要的文字信息,現在一起來看看吧。

首先提供一個html標簽的字符串 

   NSString *html = @"<p><span style=\"font-family:宋體\">勞動是人類創造物質或精神財富的活動,有體力的,也有腦力的。我們自己是勞動者,也是別人勞動的見證者。勞動存在於現在,也存在於過去和未來。勞動的人有不同,勞動的對象有不同,勞動的方式有不同,勞動的環境有不同</span>……<span style=\"font-family:宋體\">於是,勞動的滋味也有不同。勞動很重要,品味勞動的滋味也很重要。你對勞動有怎樣的體驗或感悟?請以</span>“<span style=\"font-family:宋體\">品味勞動</span>”<span style=\"font-family:宋體\">為題寫一篇不少於</span>800<span style=\"font-family:宋體\">字的作文,除詩歌外文體不限。</span></p><p><br/></p>";

然后提供一個方法 

-(NSString *)filterHTML:(NSString *)html
{
    NSScanner * scanner = [NSScanner scannerWithString:html];
    NSString * text = nil;
    while([scanner isAtEnd]==NO)
    {
        [scanner scanUpToString:@"<" intoString:nil];
        [scanner scanUpToString:@">" intoString:&text];
        html = [html stringByReplacingOccurrencesOfString:[NSString stringWithFormat:@"%@>",text] withString:@""];
    }
    return html;
}

執行完畢后會得到需要的 信息,而沒有出現html標簽。

這樣就結束了一點意義沒有,那么現在讓我們一起來看NSScanner的用法吧。

NSScanner是一個類,用於在字符串中掃描指定的字符,翻譯成我們需要的字符串或者數字,核心就是位置的移動 即scanLocation的移動變化

在上面的方法中首先指明了要掃描的對象 html(NSString) NSString * text 很重要 把我們要掃描出來的字符串存到text里面

而這個掃描到的字符串就是>之前的字符串 scanUpToString這個方法的意思是將scanLocation停留在>之前 並把之前的字符串傳給text。

回頭來看看我們去除html標簽的方法 整個過程都是在掃描過程中進行的NSScanner在執行scanUpToString這個方法時一旦掃描到需要的字符串比如例子中的“<”,其scanLocation就會變為html的初始位置。所以,要在執行完一次完整的掃描后 把html標簽用空字符串替換掉,在進行下一次掃描,也就是說再while中 html字符串的標簽字符會越來越少,而每次掃描的初始位置相對沒有變化都停留在上一次掃描結束的位置,即"<"標簽的前面。

有關NSScanner的更好的介紹 參考鏈接http://blog.csdn.net/likendsl/article/details/7974761


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM