Подтвердить что ты не робот

Самый быстрый способ сравнить строку с массивом строк в С# 2.0

Каков самый быстрый способ сравнить строку с массивом строк в С# 2.0

4b9b3361

Ответ 1

Вы хотите увидеть, находится ли строка в массиве? Я не могу вспомнить, поддерживают ли массивы метод .Contains(), поэтому если нет, создайте List <string> , добавьте свой массив в список через AddRange(), затем вызовите list.Contains({строка для сравнения}). Возвращает логическое значение, указывающее, находится ли строка в массиве.

Ответ 2

Какое сравнение вы хотите? Вы хотите узнать, находится ли данная строка в массиве?

bool targetStringInArray = array.Contains(targetString);

Вы хотите массив значений сравнения (положительный, отрицательный, нулевой)?

var comparisons = array.Select(x => targetString.CompareTo(x));

Если вы проверяете сдерживание (т.е. первый вариант), и вы собираетесь делать это с помощью нескольких строк, вероятно, было бы лучше построить HashSet<string> из массива:

var stringSet = new HashSet<string>(array);

if (stringSet.Contains(firstString))  ...
if (stringSet.Contains(secondString)) ...
if (stringSet.Contains(thirdString))  ...
if (stringSet.Contains(fourthString)) ...

Ответ 3

Если вы делаете это много раз с помощью одного массива, вы должны отсортировать массив и бинарный поиск по нему:

Array.Sort(array);
int index = Array.BinarySearch(array, input);
// if (index < 0) 
//      does not exists, "items > ~index" are larger and "< ~index" are smaller
// otherwise, "items > index" are larger and "< index" are smaller.

В противном случае просто наименее проверить массив:

bool exists = Array.IndexOf(array, input) >= 0;