如何在字符串数组中找到特定字符串的位置?

时间:2017-12-18 09:39:49

标签: c#

是的,这是为了学校工作,但问题只是工作的一小部分,我觉得它几乎可以忽略不计。

简而言之,我使用字符串数组来打印这样的网格

Random rnd = new Random();
for (row = 0; row <= 5; row++)
{
    for (column = 0; column <= 5; column++)
    {
        RandomNumber = rnd.Next(1, 13);
        if (RandomNumber == 3)
            luckDipBoard[row, column] = "You Win ";
        else
            luckDipBoard[row, column] = "You Lose ";
    }
}

//Display board
for (row = 0; row <= 5; row++)
{
    for (column = 0; column <= 5; column++)
    {
        Console.SetCursorPosition(column * 10, row * 2);

        if (luckDipBoard[row, column] == "You Win ")
            Console.ForegroundColor = ConsoleColor.Green;
        else
            Console.ForegroundColor = ConsoleColor.Red;

        Console.Write(luckDipBoard[row, column]);
    }
}

它打印数组网格并相应地为变量着色。但是,我希望能够做的是让用户能够输入我写过的位置:

Console.WriteLine("Input a row");
rowChoice = int.Parse(Console.ReadLine());
Console.WriteLine("Input a column");
columnChoice = int.Parse(Console.ReadLine());
Console.Clear();

但是,我不知道如何将这些变量转换为数组中的某个位置,并使用这些坐标搜索数组,并找出该位置内的内容。因此,例如,如果随机打印的网格和第2列第1行是#34; You Win&#34;,并且用户输入第2行第1行,则它将简单地将信用添加到变量。

如果有人能指出我正确的方向:

  • 将两个输入值用作位置
  • 搜索数组并返回位置内的值

    int TextIndex = Array.FindIndex(luckDipBoard,m =&gt; m ==&#34; You Win&#34;);

错误:严重性代码描述项目文件行抑制状态错误CS0411方法的类型参数&#39; Array.FindIndex(T [],Predicate)&#39;无法从使用中推断出来。尝试显式指定类型参数。

1 个答案:

答案 0 :(得分:3)

Array.FindIndex不起作用的原因是它只适用于向量(即string[]) - 但你有一个2D数组(即{{ 1}})。 AFAIK,常规阵列搜索方法都不适用于多维数组,因此您有两个选择:

  • 通过手动循环x / y尺寸来自行搜寻
  • 线性化您的数组并手动处理维度(这意味着改为使用string[,],并通过乘法计算偏移量)

如果您对它不太熟悉,第一种方法(循环x / y)可能比第二种方法更容易(这将涉及更改几乎所有代码行)。