iOS中如何显示html文本

时间:2021-6-3 作者:qvyue

前言

最近项目中碰到服务器返回的内容里有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文本,直接就可以显示纯文本了,如果文本内容比较多,用这个方法处理会明显卡顿.不过处理效果没的说,贼棒!

iOS中如何显示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”

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

//@”]*?>.*?” //去除所有脚本,中间部分也删除

// string regexstr = @”]*>”;  //去除图片的正则

// string regexstr = @””;  //去除所有标签,只剩br

// string regexstr = @”

]*?>.*?

“;  //去除table里面的所有内容

//string regexstr = @””;  //去除所有标签,只剩img,br,p

iOS中如何显示html文本
第二种方式处理后效果

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

总结

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

声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:qvyue@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。