1

Attoparsec提供了takeWhile1至少消耗一个字符的函数。

但是,没有类似的takeTill. 我怎样才能实现这个功能takeTill1

注意:这个问题故意显示没有研究工作,因为它是问答式回答的。虽然这个问题与前一个问题相似,但答案并不相同。我认为缺少takeTill1对于初学者来说是一个潜在的障碍,因此这个问题值得单独回答。

4

1 回答 1

2

您只需要反转谓词takeWhile1(如果您是初学者,请参阅此博客文章了解如何反转谓词):

takeTill1 :: (Char -> Bool) -> Parser ByteString
takeTill1 p = takeWhile1 (not . p)

另请参阅这个出色的答案,为skipWhile1.

于 2014-03-26T16:07:11.243 回答