最多两个换行符

时间:2011-04-18 20:27:43

标签: c# asp.net html regex

我有正则表达式:

Comment = Comment.Replace("\n", "<br />");    

运行之后,我只希望最多有两次休息。例如,3个或更多<br />将复合为<br /><br />。这将阻止人们留下巨大的空白。

有人能告诉我这是怎么做到的吗?

测试用例

Hello


This is my
Test





Peanut

Case

这应该转向:

Hello<br /><br />This is my<br />Test<br /><br />Peanut<br /><br />Case

如果&nbsp;代码

之间有<br />个{{1}},它也应该有效

4 个答案:

答案 0 :(得分:3)

首先使用"<br /><br />"连续替换3行或更多新行的实例。然后进行第二遍,并用"<br />"

替换所有剩余的新行

以下是一个快速控制台应用程序来演示。

using System;
using System.Text.RegularExpressions;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            string content = "Hello\r\n\r\n\r\nThis is my\r\nTest\r\n\r\n\r\n\r\n\r\n\r\nPeanut\r\n\r\nCase\r\n\r\n\r\n\r\n\r\n";

            Console.WriteLine("Here is the unmodified string:");
            Console.WriteLine();
            Console.WriteLine(content);

            content = Regex.Replace(content, @"(\r\n){2,}", "<br /><br />");
            content = Regex.Replace(content, @"\r\n", "<br />");

            Console.WriteLine("Here is the modified string:");
            Console.WriteLine();
            Console.WriteLine(content);

            Console.ReadLine();
        }
    }
}

享受!

答案 1 :(得分:1)

这个怎么样?

  Regex regex = new Regex( "((<br\ />(\s*)){3,})" );
  string result = regex.Replace( commentText, "" );

答案 2 :(得分:1)

当它们仅由空格分隔时,使用以下REGEX匹配两个或更多<br />

(<br />\s<br />\s*)(<br />\s*)*

我会将替换语法留给您。

答案 3 :(得分:0)

我不知道C#正则表达式的味道,但这可能有效:

regex : /(\n\n?)\n*/

replace : $1 or \1