JS查询字符串的某几个字给它添加样式、标签、字符串

在工作做我遇到了如下图,搜索关键字并给返回结果的关键字添加样式
在这里插入图片描述

indexOf + substring:

我先插入后面的</text>标签尾,然后在插入前面的<text style="color:#E976BA">标签头,这样第二次再插入标签头就不用再次查找新下标了。

var str = "你好啊盆友!";
var searchStr = "好";
var srtEndIndex = str.indexOf(searchStr ) + searchStr .length;
var srtStartIndex = str.indexOf(searchStr );
var newStr = str.substring(0, srtEndIndex) + "</text>" + str.substring(srtEndIndex);
console.log(newStr)
newStr = newStr.substring(0, srtStartIndex) + '<text style="color:#E976BA">' + newStr.substring(srtStartIndex);
console.log(newStr)
//最后输出应该的介个样子的:你<text style="color:#E976BA">好</text>啊盆友!

replace:

replace可以直接替换掉搜索字段,很简洁,推荐使用。

var str = "你好啊盆友!";
var searchStr = "好";
var newStr = str.replace(searchStr,`<text style="color:#E976BA">${searchStr}</text>`)
console.log(newStr)

最后我们得到了一个字符串:"你<text style="color:#E976BA">好</text>啊盆友!"(注意一下text标签是小程序的,自己设置成span标签啥的就好)

  • 原生JS的话用document.getElementById("demo").innerHTML=newStr;输出就好了
  • 如果是Vue框架的话需要用 <div v-html="newStr"></div>输出
  • 如果是React框架的话则需要用<div dangerouslySetInnerHTML = {{ __html:newStr}}></div>输出
  • 微信小程序可以用 <rich-text nodes="{{newStr}}"></rich-text>标签输出,或者用wxParse插件输出显示,这里就不多讲wxParse,因为度娘一堆教程,但有一点要注意的是wxParse输出时字符串如果嵌套多了一层标签的话会独占一行,如下图,要加个弹性布局display: flex;才会一行显示

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值