Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在haskell中拆分字符串:转义字符'\';作为定界符_Haskell_Split_Escaping - Fatal编程技术网

在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中运行它(我认为这就是您在序言中测试它的意思)还是在编译它时,它都应该起作用。