C# 如何将文本文件拆分为三行空行?

C# 如何将文本文件拆分为三行空行?,c#,C#,我想把一个文本文件分成三行。例如,我的文本: a b c d e f 因此,我试图创建一个字符串数组,如:{abc,def} 我试过: string[] result = Regex.Split(text, "\n\n\n"); 如何操作?换行符通常在基于Unix的系统或Windows上\r\n使用。您应该处理这两种情况: 此外,还需要将正则表达式模式指定为逐字字符串@。。。。否则,C编译器会将您的\r和\n视为转义序列,而不是您想要的正则表达式引擎 编辑:Dan Ve

我想把一个文本文件分成三行。例如,我的文本:

 a
 b
 c



 d
 e
 f
因此,我试图创建一个字符串数组,如:{abc,def}

我试过:

  string[] result = Regex.Split(text, "\n\n\n");

如何操作?

换行符通常在基于Unix的系统或Windows上\r\n使用。您应该处理这两种情况:

此外,还需要将正则表达式模式指定为逐字字符串@。。。。否则,C编译器会将您的\r和\n视为转义序列,而不是您想要的正则表达式引擎

编辑:Dan Verdolino是正确的;我的原始代码段包含一个错误,因为它使用了捕获括号,这导致在数组中返回一个额外的字符串。可以通过使用以下任一方法禁用捕获括号来解决此问题:

string[] result = Regex.Split(text, @"(\r?\n){4}", RegexOptions.ExplicitCapture);
// or //
string[] result = Regex.Split(text, @"(?:\r?\n){4}");  

此外,OP似乎要匹配三个空行;因此,正则表达式应该匹配四个连续的换行符,而不是三个

这有点棘手,但应该可以:

var lines = File.ReadLines("path")
            .Select(x => x == "" ? " " : x.Trim());
var content = string.Concat(lines)
             .Split(new[] {' '}, StringSplitOptions.RemoveEmptyEntries);
请注意,如果值之间有三条以上的空行,这也会起作用。

我将使用Environment.NewLine作为独立于平台的新行。String.Split很好用

string input = String.Format("a{0}b{0}c{0}{0}{0}d{0}e{0}f", Environment.NewLine);
string[] result = input.Split(new string[] { String.Format("{0}{0}{0}", Environment.NewLine) }, StringSplitOptions.None);

result={a\r\nb\r\nc,d\r\ne\r\nf}

是否尝试创建文件或从中读取?生成的数组似乎缺少字母之间的原始数组。你是说{a\nb\nc,d\ne\nf}?这个解决方案删除了他测试用例中字母之间的新行。@DanVerdolino谁说新行是必要的?这给出了预期的输出我收回它-我想我被问题的标题误导了大约3行。这个代码的结果是{a\r\nb\r\nc\r\n\r\nd\r\ne\r\nf}在Windows 7 x64上。现在你知道了我是如何理解这个问题的了,尽管OP的结果没有包含字母之间的\r\n。他的问题有点不清楚。
string input = String.Format("a{0}b{0}c{0}{0}{0}d{0}e{0}f", Environment.NewLine);
string[] result = input.Split(new string[] { String.Format("{0}{0}{0}", Environment.NewLine) }, StringSplitOptions.None);