问题描述
|
我有正则表达式:
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
如果在<br />
标签之间有任意数量的
,它也应该工作
解决方法
首先,将连续3个或更多换行符的实例替换为
\"<br /><br />\"
。然后第二遍,将所有剩余的新行替换为\"<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();
}
}
}
请享用!,这个怎么样?
Regex regex = new Regex( \"((<br\\ />(\\s*)){3,})\" );
string result = regex.Replace( commentText,\"\" );
,当它们之间仅由空格分隔时,请使用以下REGEX匹配两个或多个<br />
:
(<br />\\s<br />\\s*)(<br />\\s*)*
我会将替换语法留给您。,我不知道C#正则表达式的风格,但这可能有效:
regex : /(\\n\\n?)\\n*/
replace : $1 or \\1