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

Posted

技术标签:

【中文标题】用 <p> 段落和 <br /> 标签替换换行符【英文标题】:Replace newlines with <p> paragraph and with <br /> tags 【发布时间】:2011-01-02 04:49:39 【问题描述】:

所以我know 如何在我的 C# 代码中替换换行符。但是为&lt;br /&gt; 标签替换换行符并不总是很正确。

所以我想知道其他人使用什么样的策略?我猜正确的方法是使用&lt;p&gt; 标签和&lt;br /&gt; 标签。

以下是我想要获得的结果的一些示例。

如果没有换行符,我希望将文本包裹在 &lt;p&gt; 标记中。

此文本不包含换行符

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

如果文本包含换行符,我希望将其替换为 &lt;br /&gt; 标签并包裹在 &lt;p&gt; 标签中。

此文本包含 1 个换行符

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

如果有“双换行符”,我希望将该块包装在 &lt;p&gt; 标记中。

这是一个末尾带有“双换行符”的文本。

这是一个末尾没有换行符的文本。

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

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

提前致谢。

【问题讨论】:

【参考方案1】:

您可以不理会它并使用 CSS 正确呈现中断。这是一个复杂的示例,它是

 的一种“漂亮”替代品,但您使用的是 

代替:

文字放在这里。

【讨论】:

你不应该总是使用

而不是 。它大多是正确的,但并非总是如此。

我想大多数人都想使用 white-space:pre-wrap;财产。它会换行,但仍将文本显示为段落。【参考方案2】:

这是一种仅使用简单字符串替换即可完成的方法:

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

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

【讨论】:

不错的解决方案。我有一些看起来有点像这样的东西,但你的要好得多。 请注意,如果您期待可能来自其他操作系统的文本,您不仅要考虑替换 Environment.NewLine,还要考虑替换其他类型的 newLine 字符。请参阅***.com/questions/238002/… 中的一些答案。 派对迟到了,但这对我很有用:gist.github.com/plioi/5971498

以上是关于用 <p> 段落和 <br /> 标签替换换行符的主要内容,如果未能解决你的问题,请参考以下文章

HTML段落

分组元素

JS - 如何在 <br> 处分割文本并放入 2 个 <p> 中

文字和段落标签

常用的HTML标记(一)

HTML5/CSS/JS<br;与<p;标签区别