c#StreamReader,区分新行和带回车符的新行

c#StreamReader,区分新行和带回车符的新行,c#,string,stream,C#,String,Stream,我正在处理一个大的文本文件(6.5GB),我正在使用StreamReader读取它 该文件包含使用CRLF分隔的部分,但有时仅使用LF 是否有一种简单的方法来确定读入的行是换行符“\n”还是换行符为“\r\n”的回车符。StreamReader.ReadLine()似乎将它们都视为null或空。您只需将crlf和lf替换为cr即可 using (var reader = new StreamReader(@"yourfile")) using (var writer = new StreamWr

我正在处理一个大的文本文件(6.5GB),我正在使用
StreamReader
读取它

该文件包含使用CRLF分隔的部分,但有时仅使用LF


是否有一种简单的方法来确定读入的行是换行符“\n”还是换行符为“\r\n”的回车符。
StreamReader.ReadLine()
似乎将它们都视为null或空。

您只需将crlf和lf替换为cr即可

using (var reader = new StreamReader(@"yourfile"))
using (var writer = new StreamWriter(@"outfile")) // or any other TextWriter
{
    while (!reader.EndOfStream) {
        string currentLine = reader.ReadLine();
        string newLine = currentLine.Replace('\r\n','\n');
        newLine = newLine.Replace('\r','\n');
        newLine = newLine.Replace('\n','\r\n');
        writer.Write(newLine);
    }
}

“行定义为后跟换行符(“\n”)、回车符(“\r”)或紧接换行符(“\r\n”)的回车符序列。”。我不确定有没有办法改变这一点。你在找什么?索引列表\n和另一个索引列表\r\n?排序。文本文件一团糟,他们在某些地方使用\n,在其他地方使用\r\n。我一直在寻找一种简单的方法来区分两者,但我想我现在已经把它整理好了。你能把你的解决方案作为这个问题的答案来告诉我们吗?我能做的唯一方法是循环遍历字符串并查找\n并将该索引放入列表中,但他没有要求替换行尾