拆分不会显示所有字符串

问题描述

我正在制作一个应用程序(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

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...