HarmonyOS 文本中<em></em>标签标记的内容高亮显示

咨询描述:

需求是接口返回的文本带html标签的内容(被<em></em>标记)按html格式高亮显示。例如:中共中央关于认真学习宣传贯彻党的<em>二十大</em>精神的决定。

上述的[二十大]要求高亮显示。

其他系统的实现:

binding.tvTitle.text = content.title?.let { HtmlCompat.fromHtml(it, HtmlCompat.FROM_HTML_MODE_COMPACT) }
  • 1.

请教一下,HarmonyOS 的实现方式

HarmonyOS
2024-12-27 14:56:17
浏览
收藏 0
回答 1
回答 1
按赞同
/
按时间
fox280

可以用正则表达式去匹配目标字符串,之后解析传入的标签内容,存入数组,在build中用forEach遍历数组,可以高亮“二十大”

关键代码如下:

class formatS {//定义为解析后的标签内容数组,str是要显示的内容,isAim为是否高亮标志
  str:string = "";
  isAim:boolean  =false;
}

function(): void {
  let reg = new RegExp("<em>[\u4e00-\u9fa5]+</em>");//定义为查找标签<em></em>
  let arr = reg.exec(this.newsStr)//定义为:执行reg之后得到的结构,需要判断是不是有
  if(arr){
    let reg1 = new RegExp("<em>");//定义为查找<em>标签,
    let reg2 = new RegExp("</em>")//定义为查找</em>标签
    let reg1Res =reg1.exec(arr[0]);//reg1执行结果
    let reg2Res =reg2.exec(arr[0]);//reg2执行结果
    let resStr = arr[0]
    if(reg1Res&&reg2Res){
      resStr = arr[0].substring(reg1Res.index+4,reg2Res.index);//获取目标高亮内容
    }
    let index= arr.index
    /*以下代码为将解析后的内容存入数组*/
    let befStr = this.newsStr.substring(0,index);
    let endStr = this.newsStr.substring(index,arr[0].length)
    this.formatStr.push({str:befStr,isAim:false});
    this.formatStr.push({str:resStr,isAim:true});
    this.formatStr.push({str:endStr,isAim:false});
  }
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.

在build方法中:

ForEach(this.formatStr,(item:formatS)=>{
  if(item.isAim){
    Text(item.str).fontSize(20).fontColor(Color.Red);//对目标内容进行高亮处理
  }else{
    Text(item.str).fontSize(20);
  }
})
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
分享
微博
QQ
微信
回复
2024-12-27 17:19:10
相关问题
如何识别文本邮箱并高亮显示
917浏览 • 1回复 待解决
Text怎么显示带html标签文本
5271浏览 • 1回复 待解决
webview 如何显示文本html内容
2807浏览 • 1回复 待解决
HarmonyOS 怎么高亮显示搜索文字
739浏览 • 1回复 待解决
HarmonyOS 部分文本高亮解决方案
1177浏览 • 1回复 待解决
Text匹配文字高亮显示
1252浏览 • 1回复 待解决
HarmonyOS Html文本标签解析器
580浏览 • 1回复 待解决
如何实现标签文本换行
1554浏览 • 1回复 待解决
HarmonyOS NFC扫描标签内容用例代码
595浏览 • 1回复 待解决
Text怎么解析展示带html标签文本
2683浏览 • 1回复 待解决
HarmonyOS如何测量文本内容长度?
770浏览 • 0回复 待解决
HarmonyOS文本不支持trthtd标签
824浏览 • 1回复 待解决
HarmonyOS Text获取文本显示行数
1175浏览 • 1回复 待解决
如何实现文本内容竖向布局
876浏览 • 1回复 待解决