如何将<p> </p>标记应用于文本字段

时间:2009-04-05 03:10:26

标签: c# sql regex string

我在SQL Server中有一个varchar()字段,它在段落标记之间有一些回车符/换行符。

我想把它变成格式正确的HTML。

例如:

----------在----------

之前

快速的棕色狐狸跳过懒狗。然后他感到无聊并上床睡觉。之后,他和他的朋友一起玩。

第二天,他和他的朋友举行了一个盛大的聚会。


----------在-----------

之后

&lt; p&gt;快速的棕色狐狸跳过懒狗。然后他感到无聊并上床睡觉。之后,他和他的朋友一起玩。&lt; / p&gt;

&lt; p&gt;第二天,他和他的朋友举行了一个盛大的派对。&lt; / p&gt;


这样做的正确方法是什么?显然正则表达式是一个很好的方法,但我无法弄清楚如何以理智的方式捕获字段的开头以及crlf(回车/换行)组合。

那里有任何正则表达式天才吗?会爱一些帮助。谢谢,如果是的话!

4 个答案:

答案 0 :(得分:6)

这样的事情不需要正则表达式。普通的字符串操作可以做到。 (C#中的示例):

text = "<p>" + text.Replace("\r\n", "</p><p>") + "</p>";

(取决于换行符是否与系统有关,您应使用特定字符串,如"\r\n"或属性Environment.NewLine。)

如果字符串最初来自用户输入,因此您无法完全控制它,则必须在放入段落标记之前对其进行正确的html编码,以防止跨站点脚本攻击。

答案 1 :(得分:4)

不要忘记添加&lt; p&gt;标签是不够的,你必须转义HTML中具有特殊含义的字符(&lt;变成&lt; lt;等等),否则你最终可能会破坏页面甚至脚本注入。

答案 2 :(得分:0)

如果文本已经分为带换行符的段落,则可以像

一样简单
text = Regex.Replace(text, ".+", "<p>$0</p>");

这假设没有HTML特殊字符(如Thilo所提到的)或段落之间的额外空白字符,如下所示:"text\n \nmore text"。在添加标记之前,您可能希望处理类似的事情。

答案 3 :(得分:0)

如果字符串最初来自用户输入,因此您无法完全控制它,则必须在将段落标记放入

之前对其进行正确的html编码
yourString="p" + text.Replace("\r\n","<p></p>") + "</p>";