Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/10.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
Haskell新行字符_Haskell - Fatal编程技术网

Haskell新行字符

Haskell新行字符,haskell,Haskell,我需要比较Windows新行字符“\r\n”,但我得到 lexical error in string/character literal at character '\\' ['\r\n'] 我怎样才能解决这个问题 谢谢 编译器告诉您“\r\n”不是有效字符。这并不奇怪,因为Windows使用两个字符表示一行的结束。这意味着您需要一个字符串: 这也意味着在解析输入时需要更复杂的分析。查找两个字符的序列比查找单个字符稍微困难一些 解决方案之一是删除所有“\r”字符,并对可能包含以下内容的每个

我需要比较Windows新行字符“\r\n”,但我得到

lexical error in string/character literal at character '\\'

['\r\n']
我怎样才能解决这个问题


谢谢

编译器告诉您“\r\n”不是有效字符。这并不奇怪,因为Windows使用两个字符表示一行的结束。这意味着您需要一个字符串:

这也意味着在解析输入时需要更复杂的分析。查找两个字符的序列比查找单个字符稍微困难一些

解决方案之一是删除所有“\r”字符,并对可能包含以下内容的每个字符串应用一个简单筛选器\r\n:


编译器告诉您“\r\n”不是有效字符。这并不奇怪,因为Windows使用两个字符表示一行的结束。这意味着您需要一个字符串:

这也意味着在解析输入时需要更复杂的分析。查找两个字符的序列比查找单个字符稍微困难一些

解决方案之一是删除所有“\r”字符,并对可能包含以下内容的每个字符串应用一个简单筛选器\r\n:


请注意,对于Windows上处于默认文本模式的文件/流,\r\n在输入时自动转换为\n,在输出时自动转换为\r\n

如果您有默认值无法处理的特殊需求,您可能希望查看该函数,该函数允许您设置用于特定句柄的换行转换。例如:

hSetNewlineMode handle universalNewlineMode

设置句柄以在输入时接受\r\n或\n作为内部换行符,但在输出时使用本机操作系统约定。

请注意,对于Windows上默认文本模式的文件/流,\r\n在输入时自动转换为\n,在输出时自动转换为\r\n

如果您有默认值无法处理的特殊需求,您可能希望查看该函数,该函数允许您设置用于特定句柄的换行转换。例如:

hSetNewlineMode handle universalNewlineMode

设置句柄以在输入时接受\r\n或\n作为内部换行符,但在输出时使用本机操作系统约定。

@CosminMihai只是说,在任何语言中都会遇到此问题,它绝不是Haskell及其类型/库所独有的。你可以责怪微软认为两个字符比一个好,尽管实际上根本不需要回车字符。@CosminMihai一个快速修复方法是过滤每个字符串以删除'\r'字符。它们基本上是不相关的,即使在现代版本的Windows中也是如此。大多数程序,不管操作系统是什么,都会将\n识别为换行符。@Code peedient…除了Windows中的记事本,这是很多人使用的东西,除非他们在较新版本的操作系统中修复了它。@CosminMihai只是说,在任何语言中都会有这个问题,它绝不是Haskell及其类型/库所独有的。你可以责怪微软认为两个字符比一个好,尽管实际上根本不需要回车字符。@CosminMihai一个快速修复方法是过滤每个字符串以删除'\r'字符。它们基本上是不相关的,即使在现代版本的Windows中也是如此。大多数程序,无论操作系统如何,都会将\n识别为新行。@代码学徒…除了Windows中的记事本,这是很多人使用的东西,除非他们在较新版本的操作系统中修复了它。+1肯定比我的答案更好,因为您为Haskell提供了处理此问题的特定方法。事实上,甚至由C在Windows中以文本模式打开的文件上执行\n和\r\n之间的转换。它是C标准的一部分,确保您可以编写可移植C,许多语言(包括Haskell)都复制了该功能。+1肯定比我的答案好,因为您为Haskell提供了处理此问题的特定方法。实际上,C甚至可以在Windows中以文本模式打开的文件上执行\n和\r\n之间的转换。它是C标准的一部分,确保您可以编写可移植C,许多语言(包括Haskell)都复制了该功能。为了澄清您迄今为止收到的伟大答案:\r\n不是换行符-特别是,它不是字符。这是两个字符;所以您需要一个前面提到的字符串文本。当然,您遇到的这个问题与Haskell无关。为了澄清您迄今为止收到的伟大答案:\r\n不是换行符-特别是,它不是字符。这是两个字符;所以您需要一个前面提到的字符串文本。当然,你遇到的这个问题与Haskell无关。
hSetNewlineMode handle universalNewlineMode