0

Spracheパーサー フレームワークを使用して符号付き整数を解析するより良い方法があるかどうか疑問に思います。

符号のない整数のよく知られたパーサー定義があります Parse.Number.Select(int.Parse)

-しかし、プレフィックス付きの整数も解析したいと思います。

私が今持っているのは ですParse.Regex(@"\-?\d+").Select(int.Parse)

正規表現を使わずにそれを行うより良い方法はありますか?

たとえば、Parse.Char('-').Optional()次の番号を使用して解析します。

ありがとう

4

1 に答える 1

7

これを行う方法は次のようになります。

from op in Parse.Optional(Parse.Char('-').Token())
from num in Parse.Decimal
from trailingSpaces in Parse.Char(' ').Many()
select decimal.Parse(num) * (op.IsDefined ? -1 : 1);

もちろん、解析対象のコンテキストに応じて、末尾のスペースの部分は省略してください。

于 2014-02-18T19:59:46.800 に答える