パラメータを受け取るコンソール アプリケーションを構築する場合、 に渡される引数を使用できますMain(string[] args)
。
これまでは、その配列にインデックスを付けたりループしたりして、いくつかの正規表現を実行して値を抽出していました。しかし、コマンドが複雑になると、解析がかなり面倒になることがあります。
私が興味を持っているのは:
- 使用するライブラリ
- 使用するパターン
コマンドは常に次のような共通標準に準拠していると仮定します。ここで回答。
ベストアンサー1
強くお勧めしますNDesk.オプション(ドキュメンテーション)および/またはモノ.オプション(同じ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;
}