在haskell中拆分字符串:转义字符'\';作为定界符
我在拆分以“\”作为分隔符的字符串时遇到问题。 我复制了这个函数:在haskell中拆分字符串:转义字符'\';作为定界符,haskell,split,escaping,Haskell,Split,Escaping,我在拆分以“\”作为分隔符的字符串时遇到问题。 我复制了这个函数: splitText :: String -> Char -> [String] splitText [] delim =[""] splitText (c:cs) delim | c==delim = "" : rest |otherwise = (c:head rest):tail rest w
splitText :: String -> Char -> [String]
splitText [] delim =[""]
splitText (c:cs) delim
| c==delim = "" : rest
|otherwise = (c:head rest):tail rest
where
rest= splitText cs delim
问题是:我的字符串是这样开始的:“\句子…”,我得到以下错误:
lexical error in string/character literal at character 's'
我试图用“\”来转义分隔符,但它不起作用。
我只允许使用与ghci/prelude一起预先打包的、代码不包含该错误的模块。你在做什么导致错误?当你试图逃避它时,你到底在做什么?是的,这段代码可以很好地处理其他类型的输入。但是,如果我这样称呼它:splitText“\句号1”\',它会抛出错误消息。问题在于拆分具有转义字符的文本。因此,例如,即使是内置函数行“\句子”也会给出相同的错误。您需要转义两个斜杠:
splitText“\\句子号1”\\\'
。另外,在编写内联代码时,应该使用反勾号(`),这样StackOverflow格式化程序就不会吃掉`\`s。你说得对。我在Prelude中直接测试这段代码时遇到的问题是,由于某些原因,它无法识别“\\”。当我编译这个函数时,它就工作了。感谢您的帮助,无论是在GHCi中运行它(我认为这就是您在序言中测试它的意思)还是在编译它时,它都应该起作用。