regex 正则表达式将空格折叠为空格或单个换行符

9cbw7uwe  于 2023-05-08  发布在  其他
关注(0)|答案(1)|浏览(146)

我有一些杂乱的文本数据需要清理。
每个字符串看起来像下面这样:
\r\r \r\n \r\nSome interesting text on line one...\r\n And line two \r\n
我想从另一端拿出来的是
Some interesting text on line one\nAnd line two
有效地:将所有包含换行符的空白块折叠到\n,并将所有其他空白块折叠到单个空格。
我可以匹配空格(带或不带换行符),但我看不到一种方法来保留 * 最多 * 一个\n或有条件地处理它。
有没有一个简单的方法来做到这一点?

zvokhttg

zvokhttg1#

将解决方案空间扩展到不仅使用regex,下面的代码似乎也解决了这个问题:

var input = "\r\r     \r\n    \r\nSome interesting      text on line one...\r\n    And line two    \r\n";

var whitespaceRex = new Regex("\\s+");
var nonEmptyLines = input.Split(new [] { "\r\n", "\r", "\n" },
    StringSplitOptions.TrimEntries | StringSplitOptions.RemoveEmptyEntries)
    .Select(l => whitespaceRex.Replace(l, " "));
var output = string.Join("\n", nonEmptyLines);

// output: "Some interesting text on line one...\nAnd line two"

相关问题