Нужно заменить в строке все вхождения "ключевых слов" на соответствующие им поля объекта. "Ключевое слово" всегда начинается с #
(если необходимо, может и заканчиваться этим символом), само слово полностью соответствует имени поля.
var html = '<span class = "#class">#text</span>';
var obj = {
class: 'class1',
text: 'Span Text'
};
Подскажите, как это можно было бы реализовать.
Для решения, можно воспользоваться заменой по регулярному выражению. Для этого у строк есть метод .replace
Регулярное выражение может быть следующим: #(\w+)
- выбирается подстрока начинающаяся с #
и в которую входят символы из набора: A-Za-z0-9_
.
Вторым параметром, .replace
может принимать функцию подстановки, параметрами, которой являются найденные подстроки и указанные группы.
Функция может выглядеть так:
function(_, $1) { // первый параметр не важен, во втором приходит содержимое группы, а именно "class" или "text" из примера, без #
return obj[$1] || $1; // если есть поле в объекте возвращаем значение, иначе оставляем как есть
}
Пример в сборе:
var html = '<span class = "#class">#text</span>';
var obj = {
class: 'class1',
text: 'Span Text'
};
console.log(html.replace(/#(\w+)/g, function(_, $1) {
return obj[$1] || $1;
}))
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Как привязать объекты к responsive изображению? К примеру: У меня есть карта 2500x3000px, на ней изображены островаЕсть спрайт человечка с номером команды...
Использую бибилиотеку passay, для проверки паролей в веб-проекте на spring bootКак добавить кастомный файл с локализацией разобрался
У меня на фронте используется VueТам я настроил vue-router, чтоб по конкретным запросам отдавать соответствующие страницы