小编Wil*_*elm的帖子

Haskell - 如何对反斜杠字符进行模式匹配?

我想用模式匹配的递归函数用字符串中的空格替换 \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)

如何匹配单个反斜杠?

haskell pattern-matching

4
推荐指数
1
解决办法
108
查看次数

标签 统计

haskell ×1

pattern-matching ×1