本质上,Excel 中的硬返回(shift+enter 或 alt+enter,我不记得了)在我用来编写 CSV 的默认编码中放置了一个相当于 \x0A 的换行符。当我写入 CSV 时,我使用 StreamWriter.WriteLine(),它输出行加上换行符(我相信是 \r\n)。
CSV 很好,并且准确地显示 Excel 将如何保存它,问题是当我将它读入空白记录删除器时,我正在使用 ReadLine() 它将带有嵌入换行符的记录视为 CRLF。
这是我转换为 CSV 后的文件示例...
Reference,Name of Individual or Entity,Type,Name Type,Date of Birth,Place of Birth,Citizenship,Address,Additional Information,Listing Information,Control Date,Committees
1050,"Aziz Salih al-Numan
",Individual,Primary Name,1941 or 1945,An Nasiriyah,Iraqi,,Ba’th Party Regional Command Chairman; Former Governor of Karbala and An Najaf Former Minister of Agriculture and Agrarian Reform (1986-1987),Resolution 1483 (2003),6/27/2003,1518 (Iraq)
1050a,???? ???? ???????,Individual,Original script,1941 or 1945,An Nasiriyah,Iraqi,,Ba’th Party Regional Command Chairman; Former Governor of Karbala and An Najaf Former Minister of Agriculture and Agrarian Reform (1986-1987),Resolution 1483 (2003),6/27/2003,1518 (Iraq)
如您所见,第一条记录在 al-Numan 之后嵌入了换行符。当我使用 ReadLine() 时,我得到 '1050,"Aziz Salih al-Numan',当我写出它时,WriteLine() 以 CRLF 结束该行。我丢失了原始行终止符。当我再次使用 ReadLine() ,我得到以'1050a'开头的行。
我可以读入整个文件并替换它们,但之后我必须将它们替换回来。基本上我想要做的是让行终止符来确定它是 \x0a 还是 CRLF,然后如果它是 \x0A,我将使用 Write() 并插入该终止符。