当整数列表可以是任意长度时,我需要帮助解析文件中逗号分隔整数的列表。字符串可能看起来像“1,2,3,4,5,6,7,8,...”,我需要的列表就像[1,2,3,4,5,6,7, 8,...]。
文件格式如下:
0,0:1; -- minimum of 1 integer after the :
0,1:1,2;
0,2:5;
0,3:5,16,223,281; -- any amount of integers can follow the :
...
我的解析器目前只读取一个整数,但需要开始阅读更多。我可以使用takeTill将所有数字读入ByteString,但是我必须解析另一个字符串,同样的问题是不知道可以有多少数字:
parseTile :: Parser Tile
parseTile = do
x <- decimal
char ','
y <- decimal
char ':'
--t <- takeTill (\x -> x == ';')
t <- decimal
char ';'
return $ Tile x y t
我找到了this,但它对我没有帮助,因为我的文件不是json文件。
答案 0 :(得分:3)
您可以使用sepBy
和decimal
:
parseTile :: Parser Tile
parseTile = do
x <- decimal
char ','
y <- decimal
char ':'
t <- decimal `sepBy` (char ',')
char ';'
return $ Tile x y t