删除Haskell中字符串的附加引号



嘿,在我的文件中,我有一行像这样的

"Dave", "Zoe", "Amy", "Bill", "Ian", "Kevin", "Emma", "Sam", "Megan"

当处理它和hgetline将其更改为字符串时,它会导致它进入

""Dave", "Zoe", "Amy", "Bill", "Ian", "Kevin", "Emma", "Sam", "Megan""

我显然不能做[putStr-String],因为putStr是IO((

有没有办法摆脱这种东西。

感谢

假设您从包含以下内容的文件中读取行:

"Dave", "Zoe", "Amy", "Bill", "Ian", "Kevin", "Emma", "Sam", "Megan"

当通过读取时,例如readFilegetLine,这些引号也将在您的字符串中。

然后,您可以按照自己的意愿继续处理字符串。例如,通过将其拆分为空白,并删除额外的引号字符:

> map (filter (/='"')) (words s)
["Dave,","Zoe,","Amy,","Bill,","Ian,","Kevin,","Emma,","Sam,","Megan"]

有关更多示例,请参阅列表处理的进一步答案。

如果这些字符串是用show打印的,考虑到您之前的问题,请尝试用read读取它们。read函数与show相反,并取消其效果,即删除引号并取消转义转义字符。

编辑:

对不起,我没有仔细阅读这个问题。看来你还没有什么问题D您提供的字符串显然是ghci的输出,并且实际字符串不包含任何斜杠。然而,我仍然假设您想要读取程序中的各个名称,为此您需要read。要使用它,您必须首先用逗号分隔字符串。但是,如果任何名称本身包含逗号,这就变得不重要了。

我看到的最简单的解决方案是在前面加上"[",附加"]",并让read函数处理所有内容。像这样:

readList :: String -> [String]
readList str = read ("[" ++ str ++ "]")

这是假设您已经使用上一个问题

中的showList打印了它们

相关内容

  • 没有找到相关文章