0

当整数列表可以是任意长度时,我需要一些帮助来解析文件中以逗号分隔的整数列表。字符串可能看起来像“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

我找到了这个,但它对我没有帮助,因为我的文件不是 json 文件。

4

1 回答 1

4

您可以使用sepBydecimal

parseTile :: Parser Tile
parseTile = do
  x <- decimal
  char ','
  y <- decimal
  char ':'
  t <- decimal `sepBy` (char ',')
  char ';'
  return $ Tile x y t
于 2014-12-30T19:33:51.057 回答