一尘不染

在C#中解析命令行参数的最佳方法?[关闭]

c#

构建带有参数的控制台应用程序时,可以使用传递给的参数Main(string[] args)

过去,我只是索引/循环该数组,并做了一些正则表达式来提取值。但是,当命令变得更复杂时,解析可能会变得很丑陋。

所以我对以下内容感兴趣:

  • 您使用的库
  • 您使用的模式

阅读 253

收藏
2020-05-19

共1个答案

一尘不染

我强烈建议使用NDesk.Options文档)和/或Mono.Options(相同的API,不同的名称空间)。文档中示例

bool show_help = false;
List<string> names = new List<string> ();
int repeat = 1;

var p = new OptionSet () {
    { "n|name=", "the {NAME} of someone to greet.",
       v => names.Add (v) },
    { "r|repeat=", 
       "the number of {TIMES} to repeat the greeting.\n" + 
          "this must be an integer.",
        (int v) => repeat = v },
    { "v", "increase debug message verbosity",
       v => { if (v != null) ++verbosity; } },
    { "h|help",  "show this message and exit", 
       v => show_help = v != null },
};

List<string> extra;
try {
    extra = p.Parse (args);
}
catch (OptionException e) {
    Console.Write ("greet: ");
    Console.WriteLine (e.Message);
    Console.WriteLine ("Try `greet --help' for more information.");
    return;
}
2020-05-19