Конвертер Markdown на C#
хотелось бы попросить помощи у знающих людей Как можно написать алгоритм для конвертера Markdown в HTML У меня есть несколько идей, и выглядят они вот так:
//Это код который я пытался сделать, но я не знаю как сделать закрывающий тег </em>
string text = textBox1.Text;
webBrowser1.DocumentText = new Regex("_").Replace(text, "<em>");
Выглядит вывод следующим образом

Как видите, после закрытия слово текст продолжает быть курсивным. Это не правильно
По сути программа должна работать следующим образом:
string s = textBox1.Text;
string[] CharArray = s.Split('_');
for (int i = 0; i < CharArray.Length; i++)
{
if (i % 2 == 1)
{
CharArray[i] = string.Format("<em>{0}</em>", CharArray[i]);
}
}
webBrowser1.DocumentText = string.Join("", CharArray);
Но это очень не корректно. Поэтому прошу помощи Так же буду благодарен, если покажите принцип для других Markdown тегов таких как: Заголовки "#" до 6-го уровня "######" Параграфы до символа переноса строки. Полужирный шрифт "__Текст __". Неупорядоченный список начинается со знака "*". Ещё бы хотел сказать, что на форме я использую для отображения textbox(cвойства Dock = fill, Multiline = true ) и webBrowser(Dock=fill). Размещены оба элемента на SplitContainer в первой и второй Panel Хотел бы сказать, что я знаю, что есть пакеты для конвертации, но мне нужно написать именно алгоритм для преобразования
Чуть-чуть продвинулся в этом Теперь мой код выглядит так:
var text = textBox1.Text;
string pattern = @"_(.*?)_";
string replacement1 = @"<em>$1</em>";
webBrowser1.DocumentText = Regex.Replace(text,pattern,replacement1);
Но как сделать для остальных символов