iOS 数据优化之处理HTML字符串

iOS 数据优化之处理HTML字符串,第1张

富文本转html字符串

字符串转富文本

最近项目遇到的问题,因为后台返回的数据是HTML字符串,所以就按照常规处理方式把HTML字符串转换成富文本的字符串来处理,事实证明,tableview会非常卡,并且造成线程阻塞,无法响应事件

解决方案1.首先我想到的是把耗时 *** 作放在子线程来 *** 作

解决方案2. 因为是cell展示,所以只需要展示文本信息就行,那就过滤掉HTML标签,瞬间解决所有问题。所以在列表展示数据的时候HTML转换NSAttributedString一定要慎用

下面简单介绍一下NSScanner

NSScanner是一个类,用于在字符串中扫描指定的字符,翻译成我们需要的字符串或者数字,核心就是位置的移动 即scanLocation的移动变化

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

而这个扫描到的字符串就是>之前的字符串 scanUpToString这个方法的意思是将scanLocation停留在>之前 并把之前的字符串传给text。

回头来看看我们去除html标签的方法 整个过程都是在扫描过程中进行的NSScanner在执行scanUpToString这个方法时一旦扫描到需要的字符串比如例子中的“<”,其scanLocation就会变为html的初始位置。所以,要在执行完一次完整的扫描后 把html标签用空字符串替换掉,在进行下一次扫描,也就是说再while中 html字符串的标签字符会越来越少,而每次扫描的初始位置相对没有变化都停留在上一次扫描结束的位置,即"<"标签的前面。

参考链接----传送门

2013-10-30 20:42 ios去掉字符串中的html标签的方法-(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:@""]

}

//NSString * regEx = @"<([^>]*)>"

//html = [html stringByReplacingOccurrencesOfString:regEx withString:@""]

return html

}#ios

使用的控件为 WKWebView ,拦截事件在 WKUIDelegate 中进行处理。

安卓需要先开启JS支持 webView.getSettings().setJavaScriptEnabled(true)

具体代理事件处理如下所示:


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5910563.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-08
下一篇 2023-03-08

发表评论

登录后才能评论

评论列表(0条)

保存