鸿蒙Text部分文字变色

news2024/11/25 14:40:36

在这里插入图片描述

工具类:

export class TextUtil {
  public static readonly REGEX_B_S = "<B>"
  public static readonly REGEX_B_E = "</B>"
  
  /**
   * 获取高亮字符串列表
   * @param str 原始字符串
   */
  public static getHlList(str ?: string, regex ?: string): HlContent[] {
    if (str == undefined) {
      return []
    }

    let list: HlContent[] = []
    if (regex == undefined || !str.includes(regex)) {
      let content = new HlContent()
      content.content = str
      list.push(content)
      return list
    }

    if (TextUtil.REGEX_B_S == regex) {
      let splitStr: string[] = str.split(regex)
      for (let i = 0; i < splitStr.length; i++) {
        let temp = TextUtil.getHlList(splitStr[i], TextUtil.REGEX_B_E)
        if (temp != null && temp.length > 0) {
          list = list.concat(temp)
        }
      }
    }
    if (TextUtil.REGEX_B_E == regex) {
      let content1 = new HlContent()
      content1.isHl = true
      content1.content = str.substring(0, str.indexOf(regex))
      list.push(content1);

      let startIndex = str.indexOf(regex) + TextUtil.REGEX_B_E.length
      let endIndex = str.length
      if (startIndex < endIndex) {
        let content2 = new HlContent()
        content2.content = str.substring(startIndex, endIndex)
        list.push(content2);
      }
    }
    return list
  }
}

实体类:

export class HlContent {
  content: string = ""
  isHl: boolean = false
}

实际使用中:

let contentStr = '北京大学'
let keyword = '大学'
Text() {
		//因为工具类只是识别b标签,这里先将'北京大学'替换成了'北京<b>大学</b>'
          ForEach(TextUtil.getHlList(contentStr.replace(keyword,
            `${TextUtil.REGEX_B_S}${keyword}${TextUtil.REGEX_B_E}`), TextUtil.REGEX_B_S), (item: HlContent) => {
            if (item != null && item.content != null && item.content.length > 0) {
            //设置“大学”为红色,其他字体为黑色
              if (item.isHl) {
                Span(item.content).fontColor(Color.Red)
              } else {
                Span(item.content).fontColor(Color.Black)
              }
            }
          })
        }.fontSize(14)

原文:https://www.jianshu.com/p/a33f445d1c75 略作改动

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2045567.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【docker】Dockerfile练习

1、overlay文件系统原理测试 cd /mnt mkdir A B C worker merged echo "From A">./A/a.txt echo "From A">./A/b.txt echo "From A">./A/c.txt echo "From B">./B/a.txt echo "From B">./B/d.txt echo &quo…

smallpdf: 免费高效的PDF水印添加工具

引言 在数字文档管理和分享的过程中&#xff0c;保护版权和确保文档的原创性变得尤为重要。PDF文件作为一种广泛使用的格式&#xff0c;经常需要添加水印来表明所有权或提醒查看者注意文档的敏感性。本文将介绍一款名为smallpdf的免费工具&#xff0c;它能够轻松地为PDF文件添…

第41课 Scratch入门篇:显示声波图形

显示声波图形 故事背景: 电脑的麦克风可以收到各种声音,我们来看看,通过图形把麦克风的声音显示出来,设计一个绘制声音的声波图形 程序原理: 这节课的原理很简单,就是通过x,y坐标的偏移来画线,难度就是坐标点的设置,其实坐标用的习惯了,这块也不复杂,让我们一起开始…

R是一种强大的编程语言和环,你为何还需要RStudio?

下面内容摘录自《R 语言与数据科学的终极指南》专栏文章的部分内容&#xff0c;每篇文章都在 5000 字以上&#xff0c;质量平均分高达 94 分&#xff0c;看全文请点击下面链接&#xff1a; 2章1节&#xff1a;R和RStudio的下载和安装&#xff08;Windows 和 Mac&#xff09;_r…

机器学习深度学习中的Warmup技术是什么?

机器学习&深度学习中的Warmup技术是什么&#xff1f; 在机器学习&深度学习模型的训练过程中&#xff0c;优化器的学习率调整策略对模型的性能和收敛性至关重要。Warmup是优化器学习率调整的一种技术&#xff0c;旨在改善训练的稳定性&#xff0c;特别是在训练的初期阶…

netCDF文件读写处理

1.什么是 NetCDF&#xff1f; NetCDF 是一组软件库和自描述、独立于机器的数据格式&#xff0c;支持创建、访问和共享面向数组的科学数据。NetCDF 由Unidata开发和维护。Unidata 提供用于地球科学教育和研究的数据和软件工具。Unidata 是大学大气研究公司 ( UCAR ) 社区计划 (…

遗传算法与深度学习实战(4)——遗传算法详解与实现

遗传算法与深度学习实战&#xff08;4&#xff09;——遗传算法详解与实现 0. 前言1. 遗传算法简介1.1 遗传学和减数分裂1.2 类比达尔文进化论 2. 遗传算法的基本流程2.1 创建初始种群2.2 计算适应度2.3 选择、交叉和变异2.4算法终止条件 3. 使用 Python 实现遗传算法3.1 构建种…

基于IMX8M_plus+FPGA+AI监护仪解决方案

监护仪是一种以测量和控制病人生理参数&#xff0c;并可与已知设定值进行比较&#xff0c;如果出现超标可发出警报的装置或系统。 &#xff08;1&#xff09;监护仪主要采集测量人体生理参数&#xff0c;心电、血压、血氧、体温等需要采集处理大量的数据&#xff0c;系统需要多…

vue-quill-editor富文本组件返回值居中样式不生效

最近项目有用到富文本编辑器&#xff0c;用的是vue-quill-editor富文本组件&#xff0c;但在使用过程中发现个问题&#xff1a; 明明在编辑时已经设置居中&#xff0c;并且详情弹窗的回显也正常居中&#xff0c;但放到其他地方后&#xff0c;返回值的居中就不生效了 问题截图如…

ES高级查询Query DSL查询详解、term术语级别查询、全文检索、highlight高亮

文章目录 ES高级查询Query DSLmatch_all返回源数据_source返回指定条数size分页查询from&size指定字段排序sort 术语级别查询term query术语查询terms query多术语查询range query范围查询exists queryids queryprefix query前缀查询wildcard query通配符查询fuzzy query模…

阿里财报透视:谁在投入?谁在收缩?

8月15日晚&#xff0c;阿里巴巴发布2025财年Q1业绩。由于阿里今年频繁对外表态&#xff0c;所以市场也很关注这份财报能不能反映一点东西。 此前5月的年报电话会&#xff0c;阿里 CFO 徐宏曾说&#xff0c;阿里密切关注ROI。而到了7月&#xff0c;又有媒体报道称阿里内部已达成…

李晨晨的嵌入式学习 DAY27

今天主要学习了线程的两种退出方式以及分离线程和互斥锁 一&#xff0c;进程结束 1.从线程执行函数中return 2.pthread_cancel发送取消请求 3.任何一个函数使用exit或主函数return 二&#xff0c;线程资源的回收 1.pthread_join 主线程关系子线程状态 昨天有提到 2.pthrea…

嵌入式人工智能ESP32(4-PWM呼吸灯)

1、PWM基本原理 PWM&#xff08;Pulse-width modulation&#xff09;是脉冲宽度调制的缩写。脉冲宽度调制是一种模拟信号电平数字编码方法。脉冲宽度调制PWM是通过将有效的电信号分散成离散形式从而来降低电信号所传递的平均功率的一种方式。所以根据面积等效法则&#xff0c;…

【Python机器学习】FP-growth算法——构建FP树

在第二次扫描数据集时会构建一棵FP树。为构建一棵树&#xff0c;需要一个容器来保存树。 创建FP树的数据结构 FP树要比书中其他树更加复杂&#xff0c;因此需要创建一个类来保存树的每一个节点&#xff1a; class treeNode:def __init__(self,nameValue,numOccur,parentNode…

【GLM-4微调实战】GLM-4-9B-Chat模型之Lora微调实战

系列篇章&#x1f4a5; No.文章1【GLM-4部署实战】GLM-4-9B-Chat模型本地部署实践指南2【GLM-4部署实战】GLM-4-9B-Chat模型之对话机器人部署测试3【GLM-4部署实战】GLM-4-9B-Chat模型之vLLM部署推理实践4【GLM-4微调实战】GLM-4-9B-Chat模型之Lora微调实战 目录 系列篇章&…

SpringBoot整合SMS短信服务

SpringBoot整合SMS短信服务 概览pom依赖yml配置配置类service 层interfaceimpl controller层 概览 了解阿里云用户权限操作开通阿里云短信服务添加短信模板添加签名编写测试代码编写可复用的微服务接口&#xff0c;实现验证码的发送 pom依赖 <!--aliyun 短信服务--> &l…

【项目方案】IP地址地理解析方案对比与选型

目前&#xff0c;许多项目在用户发布言论时需要解析其 IP 地址&#xff0c;并且在账号管理中也有查看最近登录地的需求。然而&#xff0c;市面上的相关教程通常缺乏全面性&#xff0c;往往只提供一种简单的方法&#xff0c;导致在技术方案选型时难以进行有效的方案对比。本文旨…

前端工程化-05.Vue项目开发流程

一.Vue项目开发流程 import是导入模块&#xff0c;而export是导出模块 以.vue结尾的为vue组件文件&#xff0c;是我们Vue项目开发时经常操作的组件 <template>&#xff1a;模板部分&#xff0c;由他生成HTML代码 相当于vue当中的视图部分 <script>&#xff1a;…

C++:缺省参数、函数重载、引用

目录 一、缺省参数 二、函数重载 三、引用 3.1 引用的概念和定义 3.2 引用的特征 3.3 引用的使用 3.4 const引用 3.5 指针和引用的关系 一、缺省参数 • 缺省参数是声明或定义函数时为函数的参数指定⼀个缺省值&#xff0c;在调用该函数时&#xff0c;如果没有指定实参…

数据结构预备知识

目录 1. 什么是集合框架 2. 什么是数据结构 3. 容器背后对应的数据结构 4. 相关java知识 5. 时间复杂度 6. 空间复杂度 7. 包装类 7.1 装箱和拆箱 7.2 阿里面试题&#xff1a; 8. 泛型 8.1 泛型的语法 8.2 泛型怎样编译 9. 泛型的上界 9.1 语法 9.2 泛型方法 1.…