为什么Join()在数组元素之间添加多个换行符



我对c#还比较陌生。我需要删除文本文件的第一行,然后用剩余的文本覆盖该文件。

我无法获得与原始格式匹配的输出:

MyFile:
This is unwanted line 0
This is line 1
This is line 2
This is line 3
This is line 4

当我尝试这个:

string[] lines = pathToMyFile
.Split(Environment.NewLine.ToCharArray())
.Skip(1)
.ToArray();
// Using a newline as the separator
string myOutput = string.Join(Environment.NewLine, lines);
MessageBox.Show(myOutput);

我得到以下输出:

This is line 1
This is line 2
This is line 3
This is line 4

但如果我尝试这个:

string[] lines = pathToFile
.Split(Environment.NewLine.ToCharArray())
.Skip(1)
.ToArray();
// Using "" instead of a newline as a separator
string myOutput = string.Join("", lines); 
MessageBox.Show(myOutput);

我得到这个:

This is line 1This is line 2This is line 2This is line 3This is line 4

我如何才能在每行之间没有空格的情况下输出每一行?

如果您想将CrLf字符串视为单个"字符";在拆分中(并且希望保留任何现有的空行(,最向后兼容的方法是使用string[] Split (string[], StringSplitOptions)重载:

string[] lines = pathToMyFile
.Split(new string[] {Environment.NewLine}, StringSplitOptions.None)
.Skip(1)
.ToArray();

最新更新