说我有这个字符串:
这真是太过分了!一场大龙卷风可能会来 对你。但是我不确定!
我如何通过Javascript或Jquery使它的一部分变为粗体,使其变为:
这真是太过分了!大的龙卷风可能会来 但是我不确定!
在“龙卷风”之前添加<b>
,在龙卷风之后的第一个句段之后添加</b>
。
因此规则是:“找到龙卷风一词,在其前添加一个<b>
,并在龙卷风后的第一个句点之后添加</b>
”
希望对此有任何帮助!
答案 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!