2017-01-13 10 views
3

私は "abc、def、ghi"のようなユーザ入力テキストを持っています。私は["abc"、 "def"]のように文字列のリストを取得するためにそれを解析したいと思います。文字列の解析のためのfparsec

私は

let str : Parser<_> = many1Chars (noneOf ",") 
let listParser : Parser<_> = many (str);; 

を試みたが、それは常に私の唯一の最初の項目[ "ABC"]を与えます。 "Def"と他の人が結果リストに入っていません

答えて

3

あなたは最初のカンマまで解析していますが、カンマ自体は解析していません。

、他の事で区切られたもののリストを解析sepByを使用するには:

let comma = pstring "," 
let listParser = sepBy str comma 

あなたが解析する必要がある場合は、「少なくとも1つ」を、代わりにsepBy1を使用しています。