C# 正则表达式将多个换行符替换为<;br>;标签
我有一个字符串,如下所示: \r\n\r\n一些文本blahblah\r\n\r\n\r\n\r\n一些其他文本\r\n\r\n \r\n\r\n诸如此类的废话\r\n 我想用一个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替换多个换行符的任何实例
因此,上面的文本应该如下所示:
<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这是一个很好的观点,但我假设在这种情况下,在换行符之间使用任何空格都是可取的。我已经添加了一个替代答案,在换行后不会消耗任何东西。