我想用模式匹配的递归函数用字符串中的空格替换 \n,但我不知道如何匹配 \ 字符。
这是我的功能:
replace :: String -> String
replace ('\\':'n':xs) = ' ' : replace xs
replace (x:xs) = x : replace xs
replace "" = ""
Run Code Online (Sandbox Code Playgroud)
在('\':'n':xs)反斜杠中会转义单引号并弄乱代码,所以我写('\\':'n':xs)期望第一个 \ 会转义第二个 \ 并匹配字符串中的反斜杠。然而,事实并非如此。
这就是我在 GHCi 中尝试该函数时发生的情况:
*Example> replace "m\nop"
"m\nop"
*Example> replace "m\\nop"
"m op"
Run Code Online (Sandbox Code Playgroud)
如何匹配单个反斜杠?