C# 使用Environment.Newline拆分字符串在大多数数组项中\n留下?

C# 使用Environment.Newline拆分字符串在大多数数组项中\n留下?,c#,split,newline,C#,Split,Newline,我使用MyString.Split(Environment.Newline.ToCharArray()[0])将我的字符串从文件分割成不同的部分。但是,数组中的每一项,除了第一项之外,都以\n开头,是吗?我知道我用换行符拆分的方式有点“欺骗”,因为没有更好的词,所以如果有更好的方法,请告诉我 这是文件。。。 如果要使用.Split()而不是一次读取一行中的文件进行维护,您可以执行以下操作 var splitResult = MyString.Split( new string[]{ System

我使用
MyString.Split(Environment.Newline.ToCharArray()[0])
将我的字符串从文件分割成不同的部分。但是,数组中的每一项,除了第一项之外,都以\n开头,是吗?我知道我用换行符拆分的方式有点“欺骗”,因为没有更好的词,所以如果有更好的方法,请告诉我

这是文件。。。

如果要使用
.Split()
而不是一次读取一行中的文件进行维护,您可以执行以下操作

var splitResult = MyString.Split( new string[]{ System.Environment.NewLine },
    System.StringSplitOptions.RemoveEmptyEntries  );
    /* or System.StringSplitOptions.None if you want empty results as well */
编辑:

您遇到的问题是,在非unix环境中,新行“character”实际上是两个字符。因此,当您获取零索引时,实际上是在回车上拆分…而不是新行字符(\n)

Windows=“\r\n”

Unix=“\n”


在Windows中,换行符是两个字符(\r和\n)。
Environment.Newline.ToCharArray()[0]
表达式仅指定以下字符之一:\r。因此,另一个字符(\n)仍然是分割字符串的一部分

我建议您使用以下内容阅读您的文件:

public IEnumerable<string> ReadFile(string filePath)
{
   using (StreamReader rdr = new StreamReader(filePath))
   {
       string line;
       while ( (line = reader.ReadLine()) != null)
       {
          yield return line;
       }
   }
}
 foreach (string line in ReadLine(" ... my file path ... "))
 {

 }

那么,每个记录是否都是您期望的文件的新行?是的,就像123\n 123\n 123\n 123您会将输入文件发布到行的某个位置吗?只要前几行就足够了。我想知道为什么它是“\r\n”而不是“\n”。。。谢谢,这个有用