モナディックパーサーSpracheを使用して、数字以外の文字を除いて数字(0..9)と一致するように探しますが、先頭または末尾の空白は問題ありません。
私はこれがうまくいくはずだと思った:
public static readonly Parser<string>
Number = Parse.Numeric.Except(Parse.Letter).AtLeastOnce().Text().Token();
またはこれ:
public static readonly Parser<int>
Number = Parse.Number.Select(int.Parse).Token();
どちらも、末尾のテキストを除いて、私が考えることができるすべてのケースで機能します。
[Test]
public void Number_ParseNumberWithTrailingLetter_WasUnsuccessfull()
{
var input = new Input("123bogus");
IResult<string> result = Lexicon.Number(input);
Assert.IsFalse(result.WasSuccessful);
}
手がかりはありますか?