Как искать конкретную строку в массиве строк в C # 3.0 - PullRequest
2 голосов
/ 14 сентября 2011

Я пытаюсь найти строку в строковом массиве в C #, но я не знаю как. Итак, если массив содержит 50 элементов, большинство из которых являются нулевыми, как бы я начал искать строку в массиве? Например:

string[] this_array;
this_array = new string[50];
this_array[1] = "One, Two, Three";
this_array[2] = "Foo, Bar, Five";
this_array[3] = null;

Как мне искать "Five" в this_array? Я понимаю, что должен использовать цикл for, я просто не уверен в реальном коде. Мне нужно найти точный индекс, чтобы я не смог получить логическое значение.

Любая помощь будет высоко ценится!
Джейми

Обновление: Вот мой, очень неполный код, пока:

for (array_number = 1; array_number < this_array.Length; array_number++)
{
  //no idea what to put here :S
}

Ответы [ 5 ]

2 голосов
/ 14 сентября 2011

Используйте Linq.Это самый простой и менее подверженный ошибкам способ.

Добавьте оператор использования в начало:

using System.Linq;

И выполните поиск следующим образом.

var result = this_array.Where(x => x != null && x.Contains("string to compare"));

if (result != null) System.Writeln(result.First());
1 голос
/ 14 сентября 2011

Вот пример кода для вас. Это найдет первый индекс для соответствующей записи.

int foundIndex = -1;
for(int i=0; i < this_array.Length; ++i)
{
    if (!string.IsNullOrEmpty(this_array[i]) && this_array[i].Contains(searchString))
    {
        foundIndex = i;
        break;
    }
}
0 голосов
/ 14 сентября 2011

Поскольку это было домашнее задание, я рекомендую вам ознакомиться с методами, доступными в классе String:

Методы строки

MSDN - ваш друг.

0 голосов
/ 14 сентября 2011

Вы можете попробовать это ...

int index = -1;
string find = "Five";

for(int i = 0; i < this_array.Length; i++)
{
   if(string.IsNullOrEmpty(this_array[i]))
      continue;
   if(this_array[i].ToLowerInvariant().Contains(find.ToLowerInvariant()))
   {
      index = i;
      break;
   }
}

ПРИМЕЧАНИЕ. В моем поиске регистр не учитывается. Если вы заботитесь о расположении символов, удалите оба экземпляра .ToLowerInvariant ()

0 голосов
/ 14 сентября 2011
for(int i=1;i<this_array.length;i++)
    if(this_array[i]!=null)
        if(this_array[i].indexOf("Five")>-1
            return i;

Это грубый код на C # - возможно, я допустил несколько мелких ошибок. Но, конечно, вы могли бы достичь этого сами. Кроме того, я думаю, что, возможно, есть лучшие способы сделать это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...