CSharp · Console
// @nuget: CommandLineParser -Version 2.8.0
using System;
using System.Collections.Generic;
using CommandLine;
using System.Globalization;
using System.Text;
public class Program
{
public static void Main()
{
Console.OutputEncoding = Encoding.Unicode;
Console.WriteLine("CurrentCulture is '{0}'", CultureInfo.CurrentCulture.Name);
//Infinity
string arg = "-e ∞ -m 50 -p -w 0.25";
var args= arg.Split();
// var args = "-m 50 -p -w 0.25".Split(); //need not to pass epsilon when has default value infinity ;
var parser = new Parser(with =>
{
with.HelpWriter = Console.Out;
//setup culture for parser, e.g. en-US
with.ParsingCulture = new CultureInfo("en-US"); //modify to use your cultureinfo
});
var result = parser.ParseArguments<Options>(args);
result.WithParsed(options =>
{
Console.WriteLine("Parser Success");
Console.WriteLine("Epsilon isinfinity= {0}", Double.IsInfinity(options.Epsilon));
Console.WriteLine("Epsilon= {0}", options.Epsilon);
}
).WithNotParsed(errs => Console.WriteLine("Failed with errors:\n{0}",
String.Join("\n", errs)));
}
class Options
{
[Option('e', "epsilon",Default=Double.PositiveInfinity)]
public double Epsilon { get; set; }
[Option('m')]
public int M { get; set; }
[Option('p')]
public bool P { get; set; }
[Option('w')]
public double W { get; set; }
}
}