首页 > 解决方案 > 完全按照 Haskell 中的方式读取字符串

问题描述

我的程序是这样的:

func = do
      text <- getLine
      return text

如果我阅读 line \123\456,结果自然是\\123\\456. 我怎样才能获得 \123\456结果?

标签: haskellioio-monad

解决方案


根据评论中的讨论,您似乎想将字符串解析为字符串文字,但它没有被引号包围。

我们可以利用read :: Read a => String -> a这里的 for a string 解析它,就好像它是字符串的字符串文字一样。唯一的问题是这个字符串文字被双引号 ( ") 包围。

因此,我们可以添加这些引号,并使用:

read ('"' : text ++ "\"") :: String

然而,并非每个字符串text本身都是有效的字符串文字,因此上述方法可能会失败。例如,如果text本身包含双引号,则其前面不直接带有反斜杠 ( \)。


推荐阅读