H
H
heisenberg12021-06-20 13:54:32
JavaScript
heisenberg1, 2021-06-20 13:54:32

How to replace numbers in a template string?

Good day.
Tell me how to get the result "3 rooms for 5 guests" (replace the numbers in the line)?
Replace "4" with advert.rooms (3 for example) and "7" with advert.guests (for example 5)
The part of the template in which you want to replace the numbers:

<p class="popup__text popup_capacity">4 комнаты для 7 гостей</p>


An example of replacing something like this:
Displayed the advert.price price in the .popup_price block.
Sample:
<p class="popup__text popup_price">5200 <span>₽/ночь</span></p>

advert.price is a random imported number (eg 3100).
Decision:
const price = advertElement.querySelector('.popup_price');
  price.textContent = price.textContent.replace('5200', advert.price).

I got the result "3100 ₽/night".

Answer the question

In order to leave comments, you need to log in

1 answer(s)
V
Vadim, 2021-06-20
@heisenberg1

https://developer.mozilla.org/en/docs/Web/JavaScript...

const advert = {
  rooms: 3,
  guests: 5,
}

let str = "4 комнаты для 7 гостей"
str = str.replace(/^(\d+)(.*?)(\d+)(.*)$/, `${advert.rooms}$2${advert.guests}$4`) 
// ^ - Начало строки, $ - конец строки
// \d - цифра в регулярный выражениях.
// точка - любой символ, + - одно и более повторений, * - ноль и более повторений
// круглые скобки - выделение в группу

// левая часть в replace - регулярное выражение, которое разбирает строку на части, правая часть - на что заменить части
// $2 и $4 - части исходной строки, попавшие в группу с соответствующим индексом. $1 - первое число, $2 - всё что между первым и вторым числом, $3 - второе число, $4 - всё что после второго числа
// str = "3 комнаты для 5 гостей"

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question