You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Haskell中如何仅移除字符串中的反斜杠(\)字符并保留双引号

解决Haskell移除反斜杠保留双引号的问题

嘿,你的需求很明确——就是要删掉字符串里的所有反斜杠,同时把双引号完完整整留下来对吧?

你原来的代码问题出在判断条件上:你写的not (x elem "\"" )是在排除双引号,这自然会把输出里的双引号全删掉。要改成只移除反斜杠,只需要把判断的目标字符换成反斜杠就行啦。

这里要注意一个小细节:在Haskell的字符串里,反斜杠是转义字符,所以要表示一个实际的反斜杠,得用两个反斜杠\\来书写。

修改后的函数可以写成这样(两种写法效果完全一致):

-- 写法1:直接判断不等于反斜杠
removeBackslashes xs = [ x | x <- xs, x /= '\\' ]

-- 写法2:用elem的方式排除反斜杠
removeBackslashes xs = [ x | x <- xs, not (x `elem` "\\") ]

拿你给的例子测试一下:输入字符串"today \"tomorrow\"."(这里的\"是代码里的转义写法,实际字符串包含双引号和用来转义它的反斜杠),经过这个函数处理后,反斜杠被移除,双引号全部保留,输出就是你想要的"today ""tomorrow"""."。

另外补充个更简洁的写法,用Haskell的filter函数一行搞定:

removeBackslashes = filter (/= '\\')

内容的提问来源于stack exchange,提问作者program.exe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.30 23:02:35