简单的文本到HTML转换

Mar*_*ark 8 html c# parsing

我启用了一个非常简单asp:textboxmultiline属性.然后我接受文本框中没有标记的文本.有没有通过换行和回报可以转换为一个共同的方法<p><br/>标签?

我不是在寻找任何惊天动地的东西,但与此同时,我不只是想做一些像:

html.Insert(0, "<p>");
html.Replace(Enviroment.NewLine + Enviroment.NewLine, "</p><p>");
html.Replace(Enviroment.NewLine, "<br/>");
html.Append("</p>");
Run Code Online (Sandbox Code Playgroud)

上面的代码无法正常工作,如生成正确的html,如果一行中有两个以上的换行符.拥有html <br/></p><p>并不好; 在<br/>可以被删除.

ese*_*elk 23

我知道这是旧的,但经过一些搜索我找不到更好的东西,所以我正在使用的是:

public static string TextToHtml(string text)
{
    text = HttpUtility.HtmlEncode(text);
    text = text.Replace("\r\n", "\r");
    text = text.Replace("\n", "\r");
    text = text.Replace("\r", "<br>\r\n");
    text = text.Replace("  ", " &nbsp;");
    return text;
}
Run Code Online (Sandbox Code Playgroud)

如果由于某种原因你不能使用HttpUtility,那么你将不得不以其他方式进行HTML编码,并且需要担心许多小细节(不仅仅是<>&).

HtmlEncode只为你处理特殊字符,所以在此之后我将任何回车和/或换行的组合转换为BR标签,并将任何双空格转换为单空格加上NBSP.

您可以选择在最后一部分使用PRE标记,如下所示:

public static string TextToHtml(string text)
{
    text = "<pre>" + HttpUtility.HtmlEncode(text) + "</pre>";
    return text;
}
Run Code Online (Sandbox Code Playgroud)


Pau*_*sik 10

您的另一个选择是获取文本框内容,而不是尝试换行,段落中断只是将文本放在PRE标记之间.像这样:

<PRE>
Your text from the text box...

and a line after a break...
</PRE>
Run Code Online (Sandbox Code Playgroud)


Kla*_*sen 6

把它扔进一个<pre>标签怎么样。无论如何,这不是它的用途吗?

  • 我不想保留换行符和空格。我想将文本转换为语义正确的 html。 (2认同)

Mit*_*ers 5

根据您对内容所做的确切选择,我的典型建议是仅使用<br />语法,而不要尝试处理段落。