在 C# 中,最好的方法是确定文本文件中使用的行尾符(Unix、Windows、Mac)是什么?
在 C# 中,最好的方法是确定文本文件中使用的行尾符(Unix、Windows、Mac)是什么?
请注意,文本文件可能具有不一致的换行符。你的程序不应因此而出错。使用StreamReader
(和类似方法)上的ReadLine
将自动处理任何可能的行结尾。
如果您手动从文件中读取行,请确保接受任何行结尾,即使不一致。实际上,使用以下算法相当容易:
if (CR > LF*2) then "Mac"
else if (LF > CR*2) then "Unix"
else "Windows"
我会先搜索文件中第一个出现的\r
或\n
,如果是\n
,我会查看前面一个字符是否为\r
,如果是,那么它就是\r\n
,否则就是找到的任意一个。
\r
或\n
,那么你就知道前面的字符不是这两个中的任意一个。我认为你的意思是看下一个字符(以确定是否为\r\n
对)。 - ToolmakerSteve有一个Environment.NewLine
,但那只是用于确定当前系统上使用的内容,并不能帮助从各种来源读取文件。
如果是读取,我通常会寻找\n
(编辑:显然有一些人仅使用\r
),并假设该行在那里结束。
Environment.NewLine
是否非常相关。 - STWEnvironment.NewLine
很有用。无论如何,我没有花太多时间考虑段落的顺序。 - Don我想你无法确定,必须在编辑器中设置。你可以使用一些人工智能,算法如下:
例如,如果您有CRLF的重复出现在38、40、45处,并且在公差范围内,您将默认假定行尾为CRLF。
\r
或\n
。这是假设您有合理的输入。