代码之家  ›  专栏  ›  技术社区  ›  abenci

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

  •  2
  • abenci  · 技术社区  · 14 年前

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

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

    下面的列表呢:

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

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

    谢谢。

    4 回复  |  直到 14 年前
        1
  •  2
  •   Mohamed Nuur    14 年前

    把我的评论作为答复转载。

    由于命令行参数是带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
  •  2
  •   abatishchev Marc Gravell    14 年前
    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
            }
        }
    }
    
        3
  •  0
  •   Ed Z    14 年前

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

    http://www.ndesk.org/Options

        4
  •  -1
  •   Ali Tarhini    14 年前

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

    string.Split('/')