用 <p> 段落和 <br /> 标签替换换行符
Posted
技术标签:
【中文标题】用 <p> 段落和 <br /> 标签替换换行符【英文标题】:Replace newlines with <p> paragraph and with <br /> tags 【发布时间】:2011-01-02 04:49:39 【问题描述】:所以我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>
我可以写更多的例子/组合,但我想我的意思有点清楚。
提前致谢。
【问题讨论】:
【参考方案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 转义,否则您可能会面临跨站点脚本攻击的风险。 (注意:即使使用<pre>
标签仍然存在跨站脚本风险)。
【讨论】:
不错的解决方案。我有一些看起来有点像这样的东西,但你的要好得多。 请注意,如果您期待可能来自其他操作系统的文本,您不仅要考虑替换 Environment.NewLine,还要考虑替换其他类型的 newLine 字符。请参阅***.com/questions/238002/… 中的一些答案。 派对迟到了,但这对我很有用:gist.github.com/plioi/5971498以上是关于用 <p> 段落和 <br /> 标签替换换行符的主要内容,如果未能解决你的问题,请参考以下文章