我需要比较Windows新行字符('\ r \ n'),但我得
lexical error in string/character literal at character '\\'
['\r\n']
我该如何解决这个问题?
谢谢!
答案 0 :(得分:8)
请注意,对于Windows上默认文本模式下的文件/流,"\r\n"
会在输入时自动转换为"\n"
,反之亦然。
如果您有特殊需求,默认情况下无法处理,您可能希望查看System.IO.hSetNewlineMode
功能,该功能允许您设置用于特定句柄的换行符转换。例如:
hSetNewlineMode handle universalNewlineMode
设置句柄以在输入时接受"\r\n"
或"\n"
作为换行符(内部"\n"
),但在输出时使用本机OS约定。
答案 1 :(得分:7)
编译器告诉您'\r\n'
不是有效字符。这应该不足为奇,因为Windows使用两个字符来表示一行的结尾。这意味着您需要String
:
"\r\n"
这也意味着在解析输入时需要更复杂的分析。寻找两个字符的序列比寻找单个字符要困难一些。
解决方案的一种方法是使用应用于可能包含'\r'
的每个String
的简单过滤器删除所有"\r\n"
字符:
deMicrosoftifyString = filter (/= '\r`)