使用以下方法分割一行参数很容易:
// get arguments for myProg.exe /n /b /c
string.Split(' ');
以下列表如何:
// get arguments for myProg.exe /n /b /c:"MyProg 4.0"
即使在这种情况下,字符串也会分开帮助吗?
感谢。
答案 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的库。
答案 3 :(得分:-1)
你应该拆分参数分隔符,因为我可以在没有空格的情况下编写参数但仍然正确:myProg.exe / n / b / c:“MyProg 4.0”
string.Split('/')