vue多个关键字高亮

效果图
效果图

<template>
  <div class='text_box'>
    <div
      :class="{hightLight:index%2!==0}"
      v-for="(item,index) in textData"
      :key="index"
    >
      <span >{{item}}</span> 
    </div>
  </div>
</template>

<script>
export default {
    // 多个关键字高亮
  data() {
    return {
      datas:"撒泼返回泡啊脚alohl/osdhjppjh嗯奥术大师多嗯啊啊奥术大师大叽啊发发叽喳喳",
      arrs:[
        {keyword:"啊啊"},
        {keyword:"嗯"},
        {keyword:"喳"},
      ],
    };
  },
  created() {
    this.init();
  },
  methods: {
    init() {
      let  arrs = []
      //根据关键字的数据格式改变for循环的内容
      for(let key in this.arrs){
        arrs.push(this.arrs[key].keyword)
      }
      // 根据arrs动态填写规则
      let reg = new RegExp(`(${arrs.join('|')})`,'g')

      let result = {};
      let currentIndex = 0, returnData = [];

      while ((result = reg.exec(this.datas))) {
        returnData.push(this.datas.slice(currentIndex, result.index));
        returnData.push(result[1]);
        currentIndex = result.index + result[0].length;
      }
      if (this.datas.length > currentIndex) {
        returnData.push(this.datas.slice(currentIndex, this.datas.length));
      }
      console.log(returnData);
      this.textData = returnData;
    }
  }
};
</script>

<style>
.text_box{
    display: flex;
    align-items: start;
    flex-wrap: wrap;
}
.hightLight {
  color: red;
}
</style>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值