Каков самый быстрый способ сравнить строку с массивом строк в С# 2.0
Самый быстрый способ сравнить строку с массивом строк в С# 2.0
Ответ 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;