【问题标题】:Is there a command line argument parsing library that supports parsing java like system argument (-Dproperty=value)?是否有命令行参数解析库支持解析 java 之类的系统参数(-Dproperty=value)?
【发布时间】:2014-11-06 17:20:24
【问题描述】:

基本上我想指定一些不同的参数,理想情况下填充一个字典。大致如下:

 c:\> MyApp.exe -Dproperty1=value1 -Dproperty2=value2

会翻译成这样的:

 Dictionary<string,string>() { { "property1", "value1" }, { "property2", "value2" } } 

我查看了许多解决方案,但似乎没有一个支持这种语法。在我创建自己的或修改别人的之前,我想问一下。

【问题讨论】:

    标签: c# command-line-arguments


    【解决方案1】:

    您需要编写自己的解析算法。不管怎样,使用Linq 并不难,例如:

    args.Skip(1) // skip the program name
    .Select(x => { 
                    var parts = x.Split('='); 
                    return new KeyValuePair<string,string>(
                                parts[0].Replace("-D",""),
                                parts[1]);
                 }).ToDictionary(x => x.Key,x => x.Value);
    

    【讨论】:

    • 是的,如果这些是我需要提供的唯一类型的论点,那将很有效。该应用程序将有其他的,文件名,日志文件名,等等。我希望有一个解决方案允许我创建一些属性类,并让其他东西处理解析、验证和帮助生成。
    • @travis 您可以在 Select 之前添加 .Where(x =&gt; x.StartsWith("-D"))。只会给你以 -D 开头的参数
    猜你喜欢
    • 2013-03-21
    • 2012-01-26
    • 2011-08-15
    • 1970-01-01
    相关资源
    最近更新 更多