C# 如何将多个换行符替换为单个<;BR>;?

C# 如何将多个换行符替换为单个<;BR>;?,c#,regex,editor,C#,Regex,Editor,我正在用标记替换所有发生的\n,但由于某些原因,输入的文本有许多\n在一行中,因此我需要将它们合并 基本上,如果同时出现多个\n标记,请仅用一个标记替换它 有人能帮我吗?使用以下代码: str = Regex.Replace(str, @"[\r\n]+", "<br />"); 这将用单个替换任何回车(\r)和/或换行(\n)序列: string formatted = Regex.Replace(original, @"[\r\n]+", "<br />"); 注

我正在用

标记替换所有发生的
\n
,但由于某些原因,输入的文本有许多
\n
在一行中,因此我需要将它们合并

基本上,如果同时出现多个\n标记,请仅用一个
标记替换它


有人能帮我吗?

使用以下代码:

str = Regex.Replace(str, @"[\r\n]+", "<br />");

这将用单个

替换任何回车(
\r
)和/或换行(
\n
)序列:

string formatted = Regex.Replace(original, @"[\r\n]+", "<br />");
注意,上面的表达式将普通CR+LF组合视为两个项目的序列。您可能希望将CR+LF视为单个项目,在这种情况下,表达式会变得稍微复杂一些:

string formatted = Regex.Replace(original, @"(?:\r\n|\r(?!\n)|(?<!\r)\n){2,}", "<br />");
string formatted=Regex.Replace(原始,@“(?:\r\n| \r(?!\n)|(?”);
请注意,string.Replace()比使用正则表达式快得多:

string result = oldString.Replace("\n\n","\n");
result = result .Replace("\n","<br>");
string result=oldString.Replace(“\n\n”,“\n”);
结果=结果。替换(“\n”和“
”);
不要低估自己。如果你知道什么是正则表达式,你可能已经知道这个问题的答案了。\r是关于回车的。在Windows(DOS)中格式化文本,您将看到回车符/换行符组合的形式为\r\n。是否可以在替换之前设置至少2次重复?是的,这就是我的回答试图做的。\n\n+可以。但是如果您希望包含回车符,则这将起作用:(\r\n)(\r\n)+@卢克:为什么会有一个
@smallatom:你发现一个打字错误已经存在了五年多了!这是一个断言的一部分,但它应该读
?而不是
?!这不能处理三行换行,你需要循环调用它。看我的答案。
string formatted = Regex.Replace(original, @"(?:\r\n|\r(?!\n)|(?<!\r)\n){2,}", "<br />");
string result = oldString.Replace("\n\n","\n");
result = result .Replace("\n","<br>");