Преобразование строки в массив из массива - PullRequest
2 голосов
/ 26 января 2020

Я пытаюсь распечатать точное местоположение элемента массива, но получаю короткий

string[] ocean = { "Beebo", "Jeff","Arthur", "Nemo", "Dory" };

foreach(string fish in ocean)
{
    if (fish == "Nemo")
    {
        Console.WriteLine("We found Nemo on position {0}!",int.Parse(fish));
        return;
    }
}

Console.WriteLine("He was not here");

Мне нужно заменить токен {0} на индекс массива этого элемента в этом случае с 3, но мне не удается в int.Parse (Fi sh), который, очевидно, не работает

Ответы [ 2 ]

4 голосов
/ 26 января 2020

Самый простой способ получить эту работу - переключиться на for l oop

for(int i = 0; i < ocean.Length; i++)
{
    if (ocean[i] == "Nemo")
    {
        Console.WriteLine("We found Nemo on position {0}!", i);
        return;
    }
}
Console.WriteLine("He was not here");

В качестве альтернативы вы можете отслеживать индекс в foreach

int index = 0;
foreach(string fish in ocean)
{
    if (fish == "Nemo")
    {
        Console.WriteLine("We found Nemo on position {0}!", index);
        return;
    }

    index++;
}
Console.WriteLine("He was not here");

Или вы можете вообще избежать l oop и использовать Array.IndexOf. Возвращает -1, если значение не найдено.

int index = Array.IndexOf(ocean, "Nemo");
if(index >= 0)
    Console.WriteLine("We found Nemo on position {0}!", index);
else
    Console.WriteLine("He was not here");

А вот решение Linq

var match = ocean.Select((x, i) => new { Value = x, Index = i })
    .FirstOrDefault(x => x.Value == "Nemo");
if(match != null)
    Console.WriteLine("We found Nemo on position {0}!", match.Index);
else
    Console.WriteLine("He was not here");    
0 голосов
/ 26 января 2020

привет, я пишу это в linq, может быть, это поможет вам, потому что индекс в начале массива с нуля показывает 3

            string[] ocean = { "Beebo", "Jeff","Arthur", "Nemo", "Dory" };





        ocean.Select((x, i) => new { Value = x, Index = i }).ToList().ForEach(element =>
        {
             if (element.Value == "Nemo")
                {
                Console.WriteLine("We found Nemo on position {0}!",element.Index);
            }

        });

Как использовать его в компиляторе

...