Преобразование \ bold {}, \ italic {} (и, возможно, больше) в html теги - PullRequest
0 голосов
/ 13 апреля 2020

У меня есть несколько строк, которые содержат теги, подобные следующим: \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 - исходная строка. Хотя этот подход работает, я чувствую, что он довольно неэффективен и имеет некоторые подводные камни, так что он будет обрабатывать любой символ { независимо от того, является ли он тегом или нет.

Не могли бы вы помочь мне найти лучшее решение?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...