字符串列表,项目请求数组问题

本文关键字:数组 问题 请求 项目 列表 字符串 | 更新日期: 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;