首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在javascript中的字符串中添加关键字前后的html标记?

如何在javascript中的字符串中添加关键字前后的html标记?
EN

Stack Overflow用户
提问于 2018-03-15 03:02:39
回答 2查看 308关注 0票数 1

假设我有这样一个字符串,我希望在字符串中的特定关键字之前和后面附加html标记。

代码语言:javascript
复制
let name = "George William";

let keyword = "geo";

在追加html标签后,我想得到这样的结果,

代码语言:javascript
复制
<strong>Geo</strong>rge William

我试过这样的方法,

代码语言:javascript
复制
name.replace(new RegExp(keyword, 'gi'), "<strong>"+keyword+"</strong>");

但结果是这样的,

代码语言:javascript
复制
<strong>geo</strong>rge William

我如何才能得到结果与确切的“案例”,在原来的名字?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-03-15 04:16:40

可以使用$&引用结果中匹配的子字符串。

代码语言:javascript
复制
let name = 'George William';
let keyword = 'geo';

console.log(name.replace(new RegExp(keyword, 'gi'), '<strong>$&</strong>'));

票数 1
EN

Stack Overflow用户

发布于 2018-03-15 03:58:31

这不是我编写过的最漂亮的代码,但它不使用正则表达式,它确实可以忽略这种情况,同时使它成为一个可重用的函数,不需要具体地绑定到<strong>标记。

代码语言:javascript
复制
let name = "George William";

let keyword = "geo";

const newHtml = (str, key, tagName) => {
  return str.toLowerCase()
    .split(key.toLowerCase())
    .map((val) => {
      if (val !== '') {
        return val;
      }
      else {
        let idx = str.toLowerCase().indexOf(key.toLowerCase());
        return `<${tagName}>${str.split('').slice(idx, key.length).join('')}</${tagName}>`;
      }
    })
    .join('');
};
  
console.log(newHtml(name, keyword, 'strong'));

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49290884

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档