#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!