f# - fparsec 解析字符串序列

标签 f# fparsec

我有一个用户输入文本,如“abc,def,ghi”。我想解析它以获取字符串列表 ["abc", "def"].

我试过了

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

但它总是只给我第一项 ["abc"]。 “Def”和其他人没有出现在结果列表中

最佳答案

您正在解析第一个逗号,而不是解析逗号本身。

要解析由其他事物分隔的事物列表,请使用 sepBy :

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

如果您需要解析“至少一个”,请改用 sepBy1

关于f# - fparsec 解析字符串序列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41625973/

相关文章:

generics - 具有泛型参数类型的函数

f# - F# 中的函数 'startsWithVowel'

f# - 尝试在 f# 中验证 CSV 数据

f# - 如何在模拟类似 Haskell 解决方案的 F# 中编写可变参数函数?

scala - 更高级的类型——为什么是 Scala 而不是 F#?

parsing - 使用 FParsec,如何在解析器之间使用 manyCharsTill 而不会在结束字符串上失败?

f# - Fparsec v. 0.9.2(新手)中的空白在哪里?

parsing - 在 FParsec 中使用带有标识符解析器的预处理函数?

f# - 简单的 FParsec 列表示例