f# - 为什么 F# 中的 StreamReader.ReadLine () 不读取\n 作为新行?

标签 f# streamreader msdn

我目前正在尝试读取文件,如下所示:

53**7****\n6**195***\n*98****6*\n8***6***3\n4**8*3**1\n7***2***6\n*6****28*\n***419**5\n****8**79\n

并将其写入屏幕,但使用新行而不是/n。

在 StreamReader.ReadLine () 方法的 msdn 描述中,它说: 行定义为一系列字符,后跟换行符(“\n”)、回车符(“\r”)或回车符后紧跟换行符(“\r\n”)。返回的字符串不包含终止回车符或换行符。如果到达输入流末尾,则返回值为 null。

为什么我的程序不将 \n 解释为新行?

最佳答案

好吧,问题是 ReadLine 的文档正在讨论 '\n' (单个)字符,而实际上你有一个 "\\n" 两个字符的字符串。

在 C# 中,\ 用作转义字符 - 例如,\n 表示 ASCII 值为 10 的字符。但是,文件不是 根据 C# 规则进行解析(这是一件好事!)。由于您的文件没有字面的 10 个字符,因此它们不会被解释为结束行,这是正确的 - ASCII 中的字面翻译将是 (92, 110)。

只需使用Split(或Replace),就可以了。基本上,您希望将 "\\n" 替换为 "\n"(或者更好,Environment.NewLine)。

关于f# - 为什么 F# 中的 StreamReader.ReadLine () 不读取\n 作为新行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33474402/

相关文章:

c++ - MSDN 站点上调用 AdjustTokenPrivileges() 的示例代码因 "Cannot enable the SE_LOCK_MEMORY_NAME privilege"而失败

f# - 如何在 F# 类型提供程序中构建任意柯里化(Currying)函数?

f# - 模式匹配多个变量

f# - 构建代码表达式 "Manually"

vb.net - 打印前获取记事本页数

c# - 在 C# 中,如何复制具有任意编码的文件,逐行读取,而不添加或删除换行符

reference - 使用 MSDN 文档,是否可以隐藏或过滤继承的成员?

c# - 如何区分outlook 2010中的内联图片和附件[C#]

f# - 具有可选属性的 JSON 类型提供程序的数据示例

c# - .NET 3.5 C# StreamReader 读取 ISO-8859-1 字符不正确