单词到句点的Java粗体字符串

时间:2019-03-23 17:46:45

标签: javascript jquery string

说我有这个字符串:

  

这真是太过分了!一场大龙卷风可能会来   对你。但是我不确定!

我如何通过Javascript或Jquery使它的一部分变为粗体,使其变为:

  

这真是太过分了!大的龙卷风可能会来   但是我不确定!

在“龙卷风”之前添加<b>,在龙卷风之后的第一个句段之后添加</b>

因此规则是:“找到龙卷风一词,在其前添加一个<b>,并在龙卷风后的第一个句点之后添加</b>

希望对此有任何帮助!

2 个答案:

答案 0 :(得分:3)

下面的示例使用正则表达式和基本的DOM操作来实现您所描述的内容。

function highlightFromWordToPeriod(words) {
  let el = document.querySelector('.my-text');
  el.innerHTML = el.innerHTML.replace(new RegExp(`((${words.join('|')})[^.]*.)`, 'g'), "<b>$&</b>");
}
<div class="my-text">This has happened at it's outrageous! A big tornado might be coming towards you. But I'm not certain! Watch out for hurricane as well.
</div>
<p>
  <button onclick="highlightFromWordToPeriod(['tornado', 'hurricane'])">Replace</button>

答案 1 :(得分:0)

首先使用正则表达式选择要加粗的句子部分。然后只需使用字符串替换方法进行替换。

var str = "This has happened at it's outrageous! A big tornado might be coming towards you. But I'm not certain!";
var matchRes = str.match(/tornado[\w\s\W]*\./);
str = str.replace(matchRes[0], "<b>"+matchRes[0]+"</b>");

console.log(str);
// This has happened at it's outrageous! A big <b>tornado might be coming towards you.</b> But I'm not certain!