Attoparsec提供了takeWhile1
至少消耗一个字符的函数。
但是,没有类似的takeTill
. 我怎样才能实现这个功能takeTill1
?
注意:这个问题故意显示没有研究工作,因为它是问答式回答的。虽然这个问题与前一个问题相似,但答案并不相同。我认为缺少takeTill1
对于初学者来说是一个潜在的障碍,因此这个问题值得单独回答。
Attoparsec提供了takeWhile1
至少消耗一个字符的函数。
但是,没有类似的takeTill
. 我怎样才能实现这个功能takeTill1
?
注意:这个问题故意显示没有研究工作,因为它是问答式回答的。虽然这个问题与前一个问题相似,但答案并不相同。我认为缺少takeTill1
对于初学者来说是一个潜在的障碍,因此这个问题值得单独回答。
您只需要反转谓词takeWhile1
(如果您是初学者,请参阅此博客文章了解如何反转谓词):
takeTill1 :: (Char -> Bool) -> Parser ByteString
takeTill1 p = takeWhile1 (not . p)
另请参阅这个出色的答案,为skipWhile1
.