如何解析双括号中包含的命令行参数?

时间:2010-11-29 08:02:02

标签: c# .net command-line-arguments

使用以下方法分割一行参数很容易:

// get arguments for myProg.exe /n /b /c
string.Split(' ');

以下列表如何:

// get arguments for myProg.exe /n /b /c:"MyProg 4.0"

即使在这种情况下,字符串也会分开帮助吗?

感谢。

4 个答案:

答案 0 :(得分:2)

static void Main (string[] args)
{
    foreach (var arg in args)
    {
        var arr = arg.Split(':');
        if (arr.Length == 2)
        {
            string name = arr[0];
            string value = arr[1];
            // parse arg as a key-value pair
        }
        else
        {
            // parse arg as a flag
        }
    }
}

答案 1 :(得分:2)

将我的评论作为答案重新发布。

由于命令行参数是带有argv的字符串数组,因此根本不需要进行任何拆分:

public static void Main (string[] argv)
{
  foreach (string arg in argv) {
    Console.WriteLine("arg: {0}", arg);
  }
}

如果您将该程序称为:myProg.exe /n /b /c:"MyProg 4.0",则应看到以下内容:

arg: /n
arg: /b
arg: /c:MyProg 4.0

唯一需要分割的时间是解析特定参数时。

答案 2 :(得分:0)

我建议使用NDesk.Options。它是C#的类似getopt的库。

http://www.ndesk.org/Options

答案 3 :(得分:-1)

你应该拆分参数分隔符,因为我可以在没有空格的情况下编写参数但仍然正确:myProg.exe / n / b / c:“MyProg 4.0”

string.Split('/')