Я использую Html.Raw(Html.Encode())
, чтобы разрешить использование некоторых html. Например, я хочу жирный, курсив, код и т. Д. Я не уверен, что это правильный метод, код кажется довольно уродливым.
Input
Здравствуйте, этот текст будет [b] жирным шрифтом [/ b]. [Код] оповещения ( "Test ...") [/ код]
выход

код
<code> @Html.Raw(Html.Encode(Model.Body)
.Replace(Environment.NewLine, "<br />")
.Replace("[b]", "<b>")
.Replace("[/b]", "</b>")
.Replace("[code]", "<div class='codeContainer'><pre name='code' class='javascript'>")
.Replace("[/code]", "
"))
Мое решение
Я хочу сделать все по-другому. Вместо использования BB-тегов я хочу использовать более простые теги.
Например, *
будет выделено жирным шрифтом. Это означает, что если я введу This text is *bold*.
, текст будет заменен на This text is <b>bold</b>.
. Вроде как этот сайт использует BTW.
Проблема
Чтобы реализовать это, мне нужен Regex, и у меня практически нет опыта работы с ним. Я искал много сайтов, но не повезло.
Моя реализация выглядит примерно так, но не получается, поскольку я не могу заменить char
на string
.
static void Main(string[] args)
{
string myString = "Hello, this text is *bold*, this text is also *bold*. And this is code: ~MYCODE~";
string findString = "\\*";
int firstMatch, nextMatch;
Match match = Regex.Match(myString, findString);
while (match.Success == true)
{
Console.WriteLine(match.Index);
firstMatch = match.Index;
match = match.NextMatch();
if (match.Success == true)
{
nextMatch = match.Index;
myString = myString[firstMatch] = "<b>"; // Ouch!
}
}
Console.ReadLine();
}