Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 每次读取一个字符的文本文件时检测换行符_C# - Fatal编程技术网

C# 每次读取一个字符的文本文件时检测换行符

C# 每次读取一个字符的文本文件时检测换行符,c#,C#,目标文件: Hello World 代码: 输出: H e l l o W o r l d 因此,(sC.Equals(Environment.NewLine))在一次读取一个字符时,显然没有检测到与平台无关的换行符。。我该怎么做?试试这个 if (sC.Equals('\n')) 如果您确定在\n之后总会有一个\r,那么您可以用另一个读取器将其吞下。Read()呼叫。例如: if (sC.Equals('\n')) { reader.Read() Console.Wr

目标文件:

Hello
World
代码:

输出:

H
e
l
l
o




W
o
r
l
d
因此,
(sC.Equals(Environment.NewLine))
在一次读取一个字符时,显然没有检测到与平台无关的换行符。。我该怎么做?

试试这个

if (sC.Equals('\n'))
如果您确定在
\n
之后总会有一个
\r
,那么您可以用另一个
读取器将其吞下。Read()呼叫。例如:

if (sC.Equals('\n')) {
   reader.Read()
   Console.WriteLine("+1");
}
试试这个

if (sC.Equals('\n'))
如果您确定在
\n
之后总会有一个
\r
,那么您可以用另一个
读取器将其吞下。Read()呼叫。例如:

if (sC.Equals('\n')) {
   reader.Read()
   Console.WriteLine("+1");
}

这是因为
环境。换行符
是一个
字符串,由
\r\n
组成(取决于您的环境,在Windows平台上是
\r\n
)-这是回车符和换行符-这是一对通常定义新行的字符

因此,将一个字符(可以是
\n
\r
)与
\r\n
进行比较总是会得到
false


相反,正如@jurgen d的回答中所提到的,尝试与
\n
进行比较,这是因为
环境。换行符是一个
字符串,由
\r\n
组成(取决于您的环境,在Windows平台上是
\r\n
)-哪些是回车符和换行符-这是一对通常定义新行的字符

因此,将一个字符(可以是
\n
\r
)与
\r\n
进行比较总是会得到
false


相反,正如@jurgen d的回答中提到的,请尝试与
\n
环境进行比较。换行符实际上是两个字符:\r\n


你真的需要一次读一个字符吗?您不喜欢使用a并使用ReadLine()来代替吗?

环境。换行符实际上是两个字符:\r\n


你真的需要一次读一个字符吗?您是否更愿意使用a和ReadLine()来代替?

删除的简单方法\n\r\n

        String text = "test\n\r";
        if (text[text.Length - 1] == 10 && text[text.Length - 2] == 13)
            text= text.Substring(0, text.Length - 2);

删除的简单方法\n\r\n

        String text = "test\n\r";
        if (text[text.Length - 1] == 10 && text[text.Length - 2] == 13)
            text= text.Substring(0, text.Length - 2);
用这个-

if (sC.Equals('\r'))
在您的情况下,由于“\r”位于“\n”之前。

请使用此选项-

if (sC.Equals('\r'))

在您的情况下,“\r”在“\n”之前。

任何原因您不能
ReadLine
而不是
Read
?任何原因您不能
ReadLine
而不是
Read
?对于Unix/Linux环境(比如在Mono下运行),您的语句开头是不正确的。对于Unix/Linux环境(例如在Mono下运行),您的声明的开头不是正确的。这是有效的。。但它确实留下了一个
\r
挥之不去。。我很困惑/这奏效了。。但它确实留下了一个
\r
挥之不去。。我很困惑/