Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 正则表达式将多个换行符替换为<;br>;标签_C#_.net_Regex - Fatal编程技术网

C# 正则表达式将多个换行符替换为<;br>;标签

C# 正则表达式将多个换行符替换为<;br>;标签,c#,.net,regex,C#,.net,Regex,我有一个字符串,如下所示: \r\n\r\n一些文本blahblah\r\n\r\n\r\n\r\n一些其他文本\r\n\r\n \r\n\r\n诸如此类的废话\r\n 我想用一个标记以及标记的任何单个\r\n替换多个换行符的任何实例 因此,上面的文本应该如下所示: <br> Some text blahblah <br><br> Some other text <br><br> blah blah blah <br>

我有一个字符串,如下所示:

\r\n\r\n一些文本blahblah\r\n\r\n\r\n\r\n一些其他文本\r\n\r\n \r\n\r\n诸如此类的废话\r\n

我想用一个

标记以及

标记的任何单个\r\n替换多个换行符的任何实例

因此,上面的文本应该如下所示:

<br>  Some text blahblah <br><br> Some other text <br><br> blah blah blah <br>

一些文本废话

一些其他文本

废话废话
我已尝试过此操作,但它没有考虑到:\r\n\r\n之间的空格

Regex.Replace(text, @"[\r\n]+", "<br>")
Regex.Replace(文本,@“[\r\n]+”,“
”)
也许可以试试这个(不是正则表达式,但可以:)),它将支持奇数/偶数的
\r\n
,如果
\r\n
缺失,它将向起始和结束添加标记

 var result = string.Concat(text.Split(new char[] { '\r', '\n' })
                .Where(l => !string.IsNullOrWhiteSpace(l))
                .Select(s => string.Format("<br> {0} <br>",s)));
var result=string.Concat(text.Split(新字符[]{'\r','\n})
.Where(l=>!string.IsNullOrWhiteSpace(l))
.Select(s=>string.Format(“
{0}
”,s));
结果:

\r\n \r\n Some text blahblah \r\n \r\n \r\n \r\n Some other text \r\n \r\n \r\n \r\n blah blah blah \r\n
"<br> Some text blahblah <br><br> Some other text <br><br> blah blah blah <br>"

 \r\n \r\n Some text \r\n Some other \r\n \r\n \r\n  blah blah blah 
"<br> Some text <br><br> Some other <br><br> blah blah blah <br>"
\r\n\r\n一些文本废话\r\n\r\n\r\n\r\n一些其他文本\r\n\r\n\r\n\r\n废话废话废话\r\n
“
一些文本废话

一些其他文本废话

废话废话
” \r\n\r\n一些文本\r\n一些其他\r\n\r\n\r\n诸如此类 “
一些文本

一些其他的

废话废话
这应该可以完成这项工作

string myString = "\r\n \r\n Some text blahblah \r\n \r\n \r\n \r\n Some other text \r\n \r\n \r\n \r\n blah blah blah \r\n";
myString = Regex.Replace(myString, @"(?:\r\n *){1,2} *", "<br>");
string myString=“\r\n\r\n一些文本blahblah\r\n\r\n\r\n一些其他文本\r\n\r\n\r\n\r\n blah blah blah\r\n”;
myString=Regex.Replace(myString,@((?:\r\n*){1,2}*,“
”);
将产生

<br>Some text blahblah <br><br>Some other text <br><br>blah blah blah <br>

一些文本废话

一些其他文本

废话废话
这是怎么回事:

Regex.Replace(text, @"([\r\n]\s*)+", "<br>")
Regex.Replace(文本,@“([\r\n]\s*)+”,“
”)
或者,如果不希望在换行符运行后占用空间,请执行以下操作:

Regex.Replace(text, @"[\r\n](\s*[\r\n])+", "<br>")
Regex.Replace(文本,@“[\r\n](\s*[\r\n])+”,“
”)
您的示例与您的描述相矛盾。如果要将多个换行符转换为单个的

,为什么预期输出中有成对的

?为什么输出中会保留多个

?替换逻辑是什么?var something=@Jon逻辑是为了保留一些原始格式。@JCoder23:这是想法,而不是实现它的逻辑。\s类似于[\r\n\t\f]…最好使用纯空格,而不是\t这是一个很好的观点,但我假设在这种情况下,在换行符之间使用任何空格都是可取的。我已经添加了一个替代答案,在换行后不会消耗任何东西。