美文网首页
iOS中如何显示html文本

iOS中如何显示html文本

作者: 科了个技 | 来源:发表于2017-02-08 17:53 被阅读865次

前言

最近项目中碰到服务器返回的内容里有html文本问题,这样的文本是无法直接显示的,所以就得去想办法如何处理html文本,只显示自己想要的文字。然后发现网上各种各样的博客,有点乱,在这里自己给自己遇到的问题在做个总结,方便以后自己看

正文

第一种处理方式:

NSString* htmlString =@" Some html string \n This is some text! ";

NSAttributedString* attrStr = [[NSAttributedStringalloc]initWithData:[htmlStringdataUsingEncoding:NSUnicodeStringEncoding]options:

@{NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType }documentAttributes:nilerror:nil];

UILabel* myLabel = [[UILabelalloc]initWithFrame:self.view.bounds];

myLabel.attributedText= attrStr;

[self.viewaddSubview:myLabel];

这里是label显示html文本,直接就可以显示纯文本了,如果文本内容比较多,用这个方法处理会明显卡顿.不过处理效果没的说,贼棒!

第一种方式处理后的效果

第二种处理方式:

NSRegularExpression *regularExpretion=[NSRegularExpression regularExpressionWithPattern:@"<[^>]*>|\n|&nbsq |\r|&mdash|&ldquo|&rdquo"

options:0

error:nil];

//正则去掉html标签

NSString *string =[regularExpretion stringByReplacingMatchesInString:text options:NSMatchingReportProgress range:NSMakeRange(0, text.length) withTemplate:@""];

string = [string stringByReplacingOccurrencesOfString:@" " withString:@""]; //去掉空格

string = [string stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]; //去除字符串中所有得空格及控制字符

self.contentLabel.text = string;

第二种方式是正则表达式处理,这个就比较麻烦了,需要你知道正则表达式应该怎么去写,你的html里面有哪些标签需要去除,通常下面这个是去除所有标签,但是不包括换行,空格,一些html的标点符号

//string regexstr = @"<[^>]*>";    //去除所有的标签

这里的一段有包括了换行,空格和一些标点符号标签

@"<[^>]*>|\n|&nbsq |\r|&mdash|&ldquo|&rdquo"

这里还有一些其他的正则表达式

//@"<script[^>]*?>.*?</script>" //去除所有脚本,中间部分也删除

// string regexstr = @"<img[^>]*>";  //去除图片的正则

// string regexstr = @"<(?!br).*?>";  //去除所有标签,只剩br

// string regexstr = @"<table[^>]*?>.*?</table>";  //去除table里面的所有内容

//string regexstr = @"<(?!img|br|p|/p).*?>";  //去除所有标签,只剩img,br,p

第二种方式处理后效果

两种效果比较明显发现第一种效果好,但是第二种处理不卡顿。

总结

我的想法是我把html截取一部分用第一种方法,这样可以达到既不卡顿又效果好😄

相关文章

网友评论

      本文标题:iOS中如何显示html文本

      本文链接:https://www.haomeiwen.com/subject/izqbittx.html