我一直在用关于i / o和其他一些东西的haskell制作小宝贝程序,我发现了一些有趣的东西。我想知道在文件中,我们可以处理空行吗?例如,我们可以计算空行数或者我们可以在两个空行之间检索数据吗?如果是这样,我们如何实现这样的代码片段?我是haskell的新手,让我很难理解语言的语法,所以我真的需要一些帮助来学习它。我试过了;
readFile "/tmp/foo.txt" >>= print . length . filter (== '\n');
但这只是按预期计算每一行。我怎样才能消除非空行并按照我的意愿对其余部分进行处理?
答案 0 :(得分:2)
如果您是Haskell的新手,没有充分的理由像代码片段那样编写紧凑的代码。我会这样说的
ex1 = do
contents <- readFile "Test.hs"
let noLines = length (filter (== '\n') contents)
print noLines
这样可以更容易地看到发生了什么。
下一步是探索Prelude:有一个名为lines
的函数会将一堆文本分成几行。所以让我们分成几行并删除空行:
ex2 = do
contents <- readFile "Test.hs"
let nonempty = filter (/= "") (lines contents)
print (length nonempty)
此处nonempty
是您可以进一步处理的行列表(:: [String]
)。