字符串列表,项目请求数组问题
本文关键字:数组 问题 请求 项目 列表 字符串 | 更新日期: 2023-09-27 18:23:42
List<string> arguments = new List<string>(Environment.GetCommandLineArgs().Skip(1).Take(4));
int variant = consoleOptions.HandleInput(arguments);
public int HandleInput(List<string> input)
{
int variant = 0;
//for (int i = 0; i < input.Count; i++)
//{
// if (input[i].Contains("-s"))
// {
// variant = 1;
// }
//}
if (input[0].Contains("-s"))
{
variant = 1;
if (!String.IsNullOrWhiteSpace(input[1]) && !String.IsNullOrWhiteSpace(input[2]))
{
variant = 2;
}
if (!String.IsNullOrWhiteSpace(input[3]))
{
variant = 3;
}
}
return variant;
}
我正在从命令行启动我的应用程序。然后我得到一个字符串列表(最多 4 个(。
我现在想做的是:
如果列表中的第一个字符串是"-s",则变体 = 1
如果第二个和第三个字符串不为空,则变体 = 2
如果第四个字符串不为空,则变体 = 3
我尝试了一些东西(上面的代码(,但问题是,如果我只得到第一个字符串(一个项目(,编译器在其他地方崩溃(检查第二个字符串,导致索引无法访问(。
最好的方法是什么?
Take(4)
不能保证你会有 4 个元素,它只是意味着你不会超过 4 个。因此,您必须检查列表长度。
if (input.Count >= 1 && input[0].Contains("-s"))
{
return 1;
}
if (input.Count >= 3)
{
return 2;
}
if (input.Count >= 4)
{
return 3;
}
return 0; //what do you return if none of the conditions are met?
你尝试这样的事情。
if (input[0].Contains("-s"))
{
variant = 1;
}
if (!String.IsNullOrWhiteSpace(input[1]) && !String.IsNullOrWhiteSpace(input[2]))
{
variant = 2;
}
if (!String.IsNullOrWhiteSpace(input[3]))
{
variant = 3;
}
return variant;