在 F# 中解析分隔符分隔的值

Fra*_*ori 0 .net f# parsing text-parsing

我正在以这种形式解析字符串记录:

description: double/double/double
Run Code Online (Sandbox Code Playgroud)

例如:

item description: 0.4/8/-24.66
Run Code Online (Sandbox Code Playgroud)

每条记录应产生一个对象:

new MyObj("first item", 0.4, 2.4, -24.66)
Run Code Online (Sandbox Code Playgroud)

我可以使用正则表达式和过程方法轻松地做到这一点,但生成的代码容易出错且相当丑陋(至少从功能的角度来看)。

如何以更优雅的方式实现这一点?

Ram*_*nir 5

好吧,FParsec 很好:

#r "FParsecCS.dll"
#r "FParsec.dll"

open FParsec

let parser : Parser<_,unit> =
    sepBy pfloat (pchar '/')
Run Code Online (Sandbox Code Playgroud)

然后run parser "0.4/8/-24.66"返回val it : ParserResult<float list,unit> = Success: [0.4; 8.0; -24.66]