Attoparsec提供了skipSpace
函数。
此函数使用所有可用的空格。
如何实现跳过除skipSpaceNoNewline
和\n
之外的任何空格的函数\r\n
?
注意:这个问题故意显示没有研究工作,因为答案是Q& A-Style。
答案 0 :(得分:3)
您可以合并skipWhile
和isEndOfLine
(与\n
和\r\n
匹配)。
使用lambda函数,您可以将它们组合到跳过除换行符之外的任何空格的skipWhile
谓词。
skipSpaceNoNewline = skipWhile (\x -> isSpace_w8 x && not (isEndOfLine x))
答案 1 :(得分:-2)
为什么不使用skipSpaceNtoNewLine = filter (not.isSpace)
?
isSpace '\n'
是False
但是True
。只需直接检查空间:
[ghci] putStrLn $ filter (/=' ') $ ";df g; lkdfg\n l sd;lfk sdf"
;dfg;lkdfg
lsd;lfksdf
或者确保过滤正确的事情:
[ghci] putStrLn $ filter (\m-> m `notElem` "\t\f\v") $ ";df g; lk\vdfg\n l sd;lfk sdf"
;df g; lkdfg
l sd;lfk sdf
所以你的功能变成了:
skipSpaceNtoNewLine = filter (\m-> m `notElem` "\t\f\v")
对此感到抱歉。