在C#中最好的方法是确定文本文件(Unix,Windows,Mac)中使用的行结尾?
答案 0 :(得分:13)
请注意,文本文件的行尾可能不一致。你的程序不应该扼杀它。在ReadLine
(以及类似方法)上使用StreamReader
将自动处理任何可能的行。
如果手动从文件中读取行,请确保接受任何行结尾,即使不一致。实际上,使用以下算法非常简单:
答案 1 :(得分:2)
这是一些高级猜测:读取文件,计算CR和LF
if (CR > LF*2) then "Mac"
else if (LF > CR*2) then "Unix"
else "Windows"
另请注意,较新的Mac(Mac OS X)使用Unix行结尾
答案 2 :(得分:1)
我只是在文件中搜索第一个\r
或\n
,如果是\n
,我会查看前一个字符,看它是否为{{1}如果是这样的话,它就是\r
,否则它就是找到的。
答案 3 :(得分:0)
虽然Environment.NewLine
仅用于确定当前系统中使用的内容,但无法帮助您从各种来源读取文件。
如果正在阅读,我通常会查找\n
(编辑:显然有一些只使用\r
),并假设该行在那里结束。
答案 4 :(得分:0)
我想你无法确定,必须在编辑器中设置它。你可以使用一些AI,算法将是:
因此,例如,如果您在38,40,45处重复CRLF,并且在公差范围内,则默认假设行结束为CRLF。
答案 5 :(得分:0)
如果是我,我只是一次读取一个字符的文件,直到我遇到第一个\r
或\n
。这假设您有感性输入。
答案 6 :(得分:0)
阅读大多数文本格式我经常查找\ n,然后修剪整个字符串(开头和结尾的空格通常是多余的)。