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

Не беспокойтесь о том, какой язык выучить, используйте такие тяжеловесы, как c # или python. Такие языки, как Ruby, забавны в спальне, но не стоит приседать в сценариях на рабочем месте. Такие языки, как c # и Java, могут обрабатывать небольшие и очень большие программные проекты. Если кто-то говорит иначе, тогда вы говорите о языке сценариев. Период!

Перед началом проекта подумайте, сколько поддержки и примеров кода доступно в сети. Опять же, выбор языка, подобного Ruby, который имеет очень мало примеров кода в сети, по сравнению, например, с Java, приведет к дальнейшему горе, когда вы застряли в проблеме.

Вы не можете публиковать сообщения на форуме и ожидать ответа, пока ваш начальник спрашивает вас, как проходит кодирование. Что ты скажешь? «Я жду, чтобы кто-нибудь помог мне на этом форуме»

Выучи один язык и выучи его хорошо. Изучение нескольких языков может повлечь за собой навыки и практики, но вы все будете в порядке даже на всех из них. Будь хорош в одном. Есть целые книги, посвященные Threading в Java, которые, если подумать, представляют собой только одно пространство имен из более чем 100.

Совершенствуйся или будь в порядке.

17
задан Pratik 4 January 2012 в 10:47
поделиться

3 ответа

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

7
ответ дан 30 November 2019 в 11:13
поделиться

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

bool targetStringInArray = array.Contains(targetString);

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

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

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

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

if (stringSet.Contains(firstString))  ...
if (stringSet.Contains(secondString)) ...
if (stringSet.Contains(thirdString))  ...
if (stringSet.Contains(fourthString)) ...
32
ответ дан 30 November 2019 в 11:13
поделиться

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

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;
5
ответ дан 30 November 2019 в 11:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: