搜索关键字高亮,兼容小程序h5

文章介绍了如何在公司的搜索业务中实现关键字高亮功能,同时兼容小程序和H5。通过使用正则表达式进行文本替换以及将关键字转换成数组的方法,动态地在文本中插入样式标签以达到高亮效果。在模板中使用v-for遍历处理后的数据,并应用不同样式来区分高亮部分。
摘要由CSDN通过智能技术生成

公司的搜索业务需要关键字高亮功能,但需要兼容小程序和h5功能

网上搜了一些都是利用replace替换来实现的,但这样不能兼容小程序

export function hightLight (keyWord: string, suggtion: string) {
    // 使用 regexp 构造函数,因为这里要匹配的是一个变量
    const reg = new RegExp(keyWord, 'ig')
    const newSrt = String(suggtion).replace(reg, function (p) {
      return '<span style={color: red}>' + p + '</span>'
    })
    return newSrt
  }

自己有找到了一些可以兼容小程序和h5的写法 就是把关键字转换成数组,偶数是高亮,奇数是正常字

export const filterHighlight = (str, highlight) => {
  //过滤高亮文字 字符串 转成数组
  let reg = new RegExp('(['+highlight+'])', 'g');
  let result = {};
  let currentIndex = 0;
  let returnData = [];
  while ((result = reg.exec(str))) {
    returnData.push(str.slice(currentIndex, result.index));
    returnData.push(result[1]);
    currentIndex = result.index + result[0].length;
  }
  if (str.length > currentIndex) {
    returnData.push(str.slice(currentIndex, str.length));
  }
  return returnData
}
<template>
  <text>
    <text
      :class="index % 2 !== 0 ? 'hightLight' : ''"
      v-for="(item, index) of hightLight"
      :key="index"
      >{{ item }}</text
    >
  </text>
</template>

<script>
import { filterHighlight } from "@/utils/index.js";
export default {
  props: {
    text: {
      type: String,
      default: "",
    },
    searchValue: {
      type: String,
      default: "",
    },
  },
  
  data() {
    return {};
  },
  computed:{
	hightLight:function(){
		return filterHighlight(this.text, this.searchValue)
	}
  }
};
</script>

<style lang="scss" scoped>
.hightLight {
  color: #1551e9;
}
</style>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值