C# 如何在C中仅从行删除换行符#

C# 如何在C中仅从行删除换行符#,c#,C#,我有一个从数据库下载的输入文件,其中随机有行(在NotePad++中查看时)有换行符,但没有回车符 例如: Code|Description 123|Information Given 456|More Information Given 789|Even More Informtion Given 012|Some Other Information The 789 line, in the file, has an LF but not a CRLF. I've tried code li

我有一个从数据库下载的输入文件,其中随机有行(在NotePad++中查看时)有换行符,但没有回车符

例如:

Code|Description
123|Information Given
456|More Information Given
789|Even More
Informtion Given
012|Some Other Information

The 789 line, in the file, has an LF but not a CRLF.
I've tried code like
  if (line.Contains((char)13))
or
  if (line.Contains("\r")
or
  if (line.Contains('\r")
但是在调试器中单步执行时,没有一行显示为具有换行符。我使用文本文件的StreamReader逐行读取文件,这就是line变量的填充方式。“字符串行”是否可以不包含这些字符


此文件有数千行长,用于将其用作输入的自动化过程。因此,在下一个流程步骤运行并遇到格式错误的行之前,需要修复文件。

问题在于,当您逐行读取时,StreamReader会去除行终止字符('\r'和'\n')

一种解决方案是读取整个文件,然后使用类似于
.Split('\r').Trim()的方法将CR字符周围的行分割成几行


如果需要逐行阅读,您可以检查每行的前面是否有代码元素,如果代码元素不存在,请将字符串追加到前一行。

您应该检查该行是否以三位数字和管道符号开头。如果没有,那么它是前一行的延续。

我不知道这里是什么
行,也不知道它是如何填充的。您不认为显示相关代码会有帮助吗?StreamReader已经知道如何处理此问题。并删除使用ReadLine()时的行尾,因此Contains()永远不会为真。因此,试图解决这个问题是没有意义的:)可能重复的@JonathanWood Line是一个字符串,文件中的行在上面显示为读取“Line”的示例。@JonathanWood-从问题中可以清楚地看出变量
Line
是什么。根据您对“如果需要逐行阅读,可以检查每一行的前面是否有代码元素,如果前面没有代码元素,则将字符串追加到前一行。”,我将代码设置为查找“|”符号,以指示该行是正确语句的开头,然后将每一行类似的内容追加到后面,直到有一行出现”|“这意味着我有了一个新的说法。这为我解决了问题。StreamReader去掉字符的注释澄清了混淆。谢谢你,安德鲁。