Выделенная жирным шрифтом строка Javascript от слова до точки

#javascript #jquery #string

#javascript #jquery #строка

Вопрос:

Допустим, у меня есть эта строка:

Это произошло в это возмутительно! Возможно, к вам приближается большой торнадо. Но я не уверен!

Как я могу с помощью Javascript или Jquery выделить ее часть жирным шрифтом, чтобы она стала такой:

Это произошло в это возмутительно! Возможно, к вам приближается большой торнадо. Но я не уверен!

<b> Добавляется перед словом «tornado», а </b> после первой точки, которая следует после tornado.

Итак, правило таково: «Найдите слово tornado, добавьте <b> перед ним и добавьте </b> после первой точки, которая идет после слова tornado»

Был бы признателен за любую помощь в этом!

Ответ №1:

Приведенный ниже пример использует регулярное выражение и базовые операции DOM для достижения того, что вы описали.

 function highlightFromWordToPeriod(words) {
  let el = document.querySelector('.my-text');
  el.innerHTML = el.innerHTML.replace(new RegExp(`((${words.join('|')})[^.]*.)`, 'g'), "<b>$amp;</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. Спасибо. Не знал о замене $ amp;.

2. Могу ли я каким-то образом использовать несколько слов, таких как tornado? Допустим, что вся строка варьируется между «торнадо» и «ураган», могу ли я каким-то образом включить оба этих слова?

3. Обновлен ответ, чтобы соответствовать нескольким словам. Передайте массив слов в highlightFromWordToPeriod функцию.

Ответ №2:

Сначала выделите часть предложения, которую вы хотите выделить жирным шрифтом, используя регулярное выражение. Затем просто замените, используя метод замены строки.

 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[wsW]*./);
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!