У меня есть несколько строк, которые содержат теги, подобные следующим: \bold{content}
и \italic{content}
эти теги также могут быть вложенными, чтобы выглядеть примерно так:
hello \bold{I am \italic{some} text}
Моя цель это преобразовать это в правильную строку html, которая в этом случае будет выглядеть следующим образом:
hello <b>I am <i>some</i> text</b>
Мое текущее решение заключается в следующем:
let tags: Array<string> = []
str = str.replace(/(\\bold)\s?/g, "<b>")
str = str.replace(/(\\italic)\s?/g, "<i>")
for (let i = 0; i < str.length; i++) {
const character = str.charAt(i)
if (character == '{') {
let tag = str.charAt(i - 2)
tags.push(tag)
} else if (character == '}') {
let tag = tags.pop()
let completeTag = "<\/" + tag + ">"
str = str.replace("}", completeTag)
}
}
return str.replace(/{/g, "")
где str
- исходная строка. Хотя этот подход работает, я чувствую, что он довольно неэффективен и имеет некоторые подводные камни, так что он будет обрабатывать любой символ {
независимо от того, является ли он тегом или нет.
Не могли бы вы помочь мне найти лучшее решение?