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
挥之不去。。我很困惑/