如何在字符串的二维数组中找到特定字符串

本文关键字:字符串 二维数组 | 更新日期: 2023-09-27 18:35:10

我需要在二维数组中找到一个字符串,但我不知道怎么做。代码应如下所示:

...
Random x = new.Random();
Random y = new.Random();
string[,] array = new string[10,10];
{
    for (int i = 0; i < 10; i++)
    {
        for (int j = 0; j < 10; j++)
        {
            array[i, j] = "";
        }
    }
}
array[x.Next(0,10),y.Next(0,10)] = "*";
...

*符号总是在不同的位置,我想知道如何找到它。谢谢

如何在字符串的二维数组中找到特定字符串

您可以通过遍历数组来找到它,就像初始化它一样,只是您不是为数组索引分配一个值,而是检查它的相等性:

int i = 0;
int j = 0;
bool found = false;
for (i = 0; i < 10 && !found; i++)
{
    for (j = 0; j < 10; j++)
    {
        if (array[i, j] == "*")
        {
            found = true;
            break;
        }
    }
}
if (found)
    Console.WriteLine("The * is at array[{0},{1}].", i - 1, j);
else
    Console.WriteLine("There is no *, you cheater.");

作为具有LINQ的替代搜索查询:

Random xRnd = new Random(DateTime.Now.Millisecond);
Random yRnd = new Random(DateTime.Now.Millisecond);
string[,] array = new string[10, 10];
array[xRnd.Next(0, 10), yRnd.Next(0, 10)] = "*";
var result = 
    Enumerable.Range(0, array.GetUpperBound(0))
    .Select(x => Enumerable.Range(0, array.GetUpperBound(1))
        .Where(y => array[x, y] != null)
        .Select(y => new { X = x, Y = y }))
    .Where(i => i.Any())
    .SelectMany(i => i)
    .ToList();

resultX,Y形式的匹配列表