Как расставить html теги в тексте по позициям, заданным индексами?
Есть абзац простого текста, а так же есть отдельно массив объектов, описывающий его форматирование внутри, такого вида:
let text = "Привет, я текст.";
let format = [
{
type: "bold",
start: 0,
end: 6
},
{
type: "italic",
start: 0,
end: 1
},
{
type: "strike",
start: 9,
end: 14
},
];
Соответственно надо применить к тексту форматирование, обернув символы с позиции start
по end
в соответствующие html теги. Типов больше, но главное принцип. Их можно обозначить, например так:
const types = {
bold: {
start: "<b>",
end: "</b>"
},
italic: {
start: "<i>",
end: "</i>"
},
strike: {
start: "<del>",
end: "</del>"
},
other: {
start: "<span class='other'>",
end: "</span>"
},
};
Ожидаемый результат:
<b><i>П</i>ривет<b>, я <del>текст</del>.
Проблема в том, что если просто последовательно применять объекты форматирования к одному и тому же тексту, индексы уже на втором шаге съедут. Так же открывающие и закрывающие теги имеют разную переменную длину. Как это сделать?