用<p>段和<标签</p>替换换行符

时间:2010-01-06 19:25:04

标签: c# .net html string newline

所以我know如何替换我的C#代码中的换行符。但是替换<br />标记的换行符并不总是非常正确。

所以我想知道其他人使用什么样的策略?我猜测的正确方法是使用<p>代码和<br />代码。

以下是我想得到的结果的一些例子。

如果没有换行符,我希望文本包含在<p>标记中。

  

此文字不包含换行符

<p>This text contains no newlines</p>   

如果文字包含换行符,我希望将其替换为<br />代码并包含在<p>代码中。

  

本文包含
  1个新行

<p>This text contains<br /> 1 newline.</p>

如果有“双重换行符”,我希望将该块包含在<p>标记中。

  

这是一篇末尾带有“双重换行符”的文字。

     

这是一个最后没有换行的文字。

<p>This a text with 'double newlines at the end.</p>
<p>This is a text with no newline at the end.</p>

我可以写更多的例子/组合,但我想我的意思有点清楚。

提前致谢。

2 个答案:

答案 0 :(得分:20)

这是一种只使用简单字符串替换的方法:

    string result = "<p>" + text
        .Replace(Environment.NewLine + Environment.NewLine, "</p><p>")
        .Replace(Environment.NewLine, "<br />")
        .Replace("</p><p>", "</p>" + Environment.NewLine + "<p>") + "</p>";

请注意,您的文本必须首先进行HTML转义,否则您可能会面临跨站点脚本攻击的风险。 (注意:即使使用<pre>标记仍然存在跨站点脚本风险。)

答案 1 :(得分:5)

您可以不管它并使用CSS正确渲染中断。这是一个复杂的例子,它是&lt; pre&gt;的一种“漂亮”替代品。但是你正在使用&lt; p&gt;代替:

&lt; p style =“padding:1em; line-height:1.1em; font-family:monospace; white-space:pre; overflow:auto; background-color:rgb(240,255,240); border:thin solid rgb (255220255);“&GT;

文字就在这里。

&LT; / p为H.