Android 解决小于号(<)引起的html加载残缺问题

有如下一段文本需要在Android设备上显示

沁园春&middot;雪<br>头州游3&times;5=15<br>最的采分析<p>和论证,技术标</p>准和规范的应出给<a href="http://www.baidu.com">This is a link</a>。光刑句括:9Fs>1、出纷言有弹性:9Fs<1、进给缺三弹性:aF<=1、进给单份弹性:AFs=月,进。

分析其特点如下:

1、包含有html转义字符:&middot; 和 &times;

2、包含html标签:<br>、<p>、<a href="http://www.baidu.com">、</a>

3、含有小于号:<、<=


正常加载肯定是不行的转义字符、html标签直接显示都是不合适的,如图:

以HTML的格式加载会出现小于号后面的内容被截断,显示不全的问题,如下图:


 如果能单独对小于号(<)转义一下是不是就可以解决这个问题了,首先需要确认如何从一段html中匹配出单独的小于号(不包括html标签起始)。使用正则表达式在线测试工具验证

正则表达式在线测试 | 菜鸟工具一、校验数字的表达式 数字:^[0-9]*$ n位的数字:^\d{n}$ 至少n位的数字:^\d{n,}$ m-n位的数字:^\d{m,n}$ 零和非零开头的数字:^(0|[1-9][0-9]*)$ 非零开头的最多带两位小数的数字:^([1-9][0-9]*)+(\.[0-9]{1,2})?$ 带1-2位小数的正数或负数:^(\-)?\d+(\.\d{1,2})$ 正数、负数、和小数:^(\-|\+)?\d+(\.\..https://c.runoob.com/front-end/854/使用以下正则表达式可以达到基本的业务需求:

 具体代码实现:

/**
 * 1、将小于号转化成 &lt;
 * @param content
 */
fun converterHtmlStr(content: String): CharSequence {
    var temp = content
    if (TextUtils.isEmpty(content)) {
        return ""
    }
    // 1、将小于号转化成 &lt;
    if (temp.contains("<")) {
       temp = temp.replace("<(?![a-zA-Z 0-9""=;:._#-?/]+>)".toRegex(), "&lt;")
    }
    return HtmlCompat.fromHtml(temp, HtmlCompat.FROM_HTML_MODE_LEGACY)
}

//调用
tvContent.text = converterHtmlStr(htmlStr)

 效果:


 注:正则表达式的语法可以参考 正则表达式 – 语法 | 菜鸟教程

 此处我们使用的如下格式的正则(查找后面不是html标签后半段的小于号):


 

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值