问题描述
我正在制作一个应用程序(Windows窗体),该应用程序将运行命令并检查参数。我尝试对参数使用split,但是我注意到只显示了一个字符串,这是命令而不是参数。我在做什么错了?
输入:
sicr -dev
RunCommands.cs:
class RunCommands
{
public string Parse(string command)
{
string[] args = command.Split(' ');
if (command.StartsWith("sicr"))
{
return SICR(args);
}
return "Unknown console error.";
}
private string SICR(string[] args)
{
foreach (string arg in args)
{
System.Diagnostics.Debug.WriteLine(arg);
if (arg == "-dev")
{
return "SUCCES";
}
else
{
return "ERROR: Not enough administrator levels.";
}
}
return "ERROR: Unknown.";
}
}
输出:
sicr (Supposed to be -dev)
解决方法
如注释中所述,您将返回第一个参数,这就是为什么它不使用-dev
命令的原因。您可以将功能更改为:
private string SICR(string[] args)
{
if (args.Length == 0)
{
return "ERROR: Unknown.";
}
return args.Contains("-dev") ? "SUCCESS" : "ERROR: Not enough administrator levels.";
}
其中哪个将在args
中搜索-dev
。