使用ReadLine输入来控制我想在数组中使用哪个项目并获取其项目编号?

时间:2018-05-30 15:49:10

标签: c# arrays

假设我已经在我的程序中创建了2个数组(数组“a”和数组“b”),它们都具有相同数量的项目。它们具有不同的值,但它们以数字顺序相互完成。我想要做的是当我在数组“a”中输入项目的名称时,它应该给我该项目的编号,然后使用该编号来调用数组b中项目的名称。为了举例说明我的想法,请查看以下代码:

假设数组“file”包含项目“abc”,“cde”,“fgh”和数组“目录中有项目”123“,”456“,”789“

string[] file = new [] { "abc", "cde", "fgh" };
string[] directory = new [] { "123", "456", "789" };
string typed;
typed = Console.ReadLine();

if (typed == file[(name of one of the items in array "file" for example "abc")])

因为“abc”是数组“file”中的第一项,我需要一些命令将其更改为项目编号,在本例中为[0]

{
    int given number = file[number of the item we entered]
    Process.Start(directory[given number]+file[the same number that has been converted]);
}

编辑:我很抱歉,但是当我提出问题时(我的意思是我问了正确的问题,但忘了它的一部分),我输了“ if(typed == file [(数组“文件”中的一个项的名称,例如“abc”)])“我不知道如何通过用户输入的输入使数组得到重新输入你也可以帮帮我吗?

2 个答案:

答案 0 :(得分:1)

Array.IndexOf()方法返回特定项在数组中出现的索引。如果项目根本没有出现在数组中,则返回-1。您可以使用此方法来满足您的要求,如下所示:

string typed = Console.ReadLine();
string[] file = {"abc", "cde", "fgh"};
int result = Array.IndexOf(file, typed);

//result of IndexOf will be 0 or higher if it found a matching string in the array
if (result >= 0)
{
   Console.WriteLine("Your input value " + typed + " exists in the array at index " + result.toString());
}
else
{
   Console.WriteLine("Your input did not match anything");
}

请参阅the documentation for Array.IndexOf

N.B。仅当数组中的所有值都是唯一的时,才能正常工作。

答案 1 :(得分:1)

存放在字典中是不是更好?

var directories = new Dictionary<string, string>();

因此用户键入“abc”,它会查找并返回目录[“abc”]。

但是,如果你绝对坚持阵列方法,你可以这样做:

var index = file.IndexOf(directories, "abc");

...然后获取目录数组中的相应项 - 目录[index];