Я хочу использовать C #, чтобы проверить, содержит ли строковое значение слово в строковом массиве. Например,
string stringToCheck = "text1text2text3";
string[] stringArray = { "text1", "someothertext", etc... };
if(stringToCheck.contains stringArray) //one of the items?
{
}
Как я могу проверить, содержит ли строковое значение для 'stringToCheck' слово в массиве?
Ответы:
вот как вы можете это сделать:
ОБНОВЛЕНИЕ: Может быть, вы ищете лучшее решение ... обратитесь к ответу @Anton Gogolev ниже, который использует LINQ.
источник
Вот как:
Это проверяет,
stringToCheck
содержит ли какая-либо из подстрок изstringArray
. Если вы хотите убедиться, что он содержит все подстроки, изменитеAny
наAll
:источник
stringArray.Any(s => s.IndexOf(stringToCheck, StringComparison.CurrentCultureIgnoreCase) > -1)
Попробуй это:
Нет необходимости использовать LINQ
источник
stringArray.Any(w => stringToCheck.IndexOf(w) >= 0)
но ответ Linq с использованием String.Contains имеет больше смысла, поскольку именно об этом и просят.Просто используйте метод linq:
источник
using System.Linq;
Самый простой и образцовый способ.
источник
источник
Возможно, что-то вроде этого:
источник
String.Contains
может быть лучше, чемString.IndexOf
если вы не хотите игнорировать регистр, так как Microsoft забыла два аргумента,String.Contains
вы должны написать свой собственный. Рассмотрим:Array.Exists(stringArray, s => stringToCheck.IndexOf(s, StringComparison.OrdinalIgnoreCase) > -1)
Использование Linq и метода group было бы самым быстрым и более компактным способом сделать это.
источник
Вы можете определить свои собственные
string.ContainsAny()
иstring.ContainsAll()
методы. В качестве бонуса я даже добавилstring.Contains()
метод, который учитывает сравнение без учета регистра и т. Д.Вы можете проверить их с помощью следующего кода:
источник
Я использую следующее в консольном приложении, чтобы проверить аргументы
источник
Я бы использовал Linq, но это все еще можно сделать через:
источник
Пытаться:
источник
Вы также можете сделать то же самое, что предлагает Антон Гоголев, чтобы проверить, совпадает ли какой-либо элемент с каким-либо элементом в :
stringArray1
stringArray2
И также все элементы в stringArray1 соответствуют всем элементам в stringArray2:
источник
источник
попробуйте это, вот пример: проверить, содержит ли поле какое-либо из слов в массиве. Проверить, содержит ли поле (someField) какие-либо слова из массива.
источник
источник
Для создания этого я использовал метод, аналогичный IndexOf от Maitrey684 и циклу foreach Theomax. (Примечание: первые 3 «строковые» строки являются лишь примером того, как вы можете создать массив и получить его в правильном формате).
Если вы хотите сравнить 2 массива, они будут разделены точкой с запятой, но последнее значение не будет иметь один после него. Если вы добавите точку с запятой к строковой форме массива (то есть a; b; c становится a; b; c;), вы можете сопоставить, используя «x;» независимо от того, в каком положении он находится:
источник
bFound устанавливает значение true, если искомая строка сопоставляется с любым элементом массива 'lines'.
источник
Попробуй это
Он вернет вам строку с первым появлением текста, который вы ищете.
источник
Если
stringArray
содержит большое количество строк различной длины, рассмотрите возможность использования Trie для хранения и поиска массива строк.Вот реализация
Trie
классаЕсли все строки
stringArray
имеют одинаковую длину, вам лучше использоватьHashSet
вместоTrie
источник
Простое решение, не требуется linq любой
String.Join (",", массив) .Contains (Значение + ",");
источник
источник
Попробуйте это, нет необходимости в петле ..
источник
Для завершения вышеуказанных ответов, для проверки IgnoreCase используйте:
источник
Для моего случая вышеуказанные ответы не сработали. Я проверял строку в массиве и присваивал ей логическое значение. Я изменил ответ @Anton Gogolev, удалил
Any()
метод и поместил методstringToCheck
внутрьContains()
.источник
Используя методы Find или FindIndex класса Array :
источник
Я использовал следующий код, чтобы проверить, содержит ли строка какие-либо элементы в массиве строк:
источник
Text = "matched"
столько раз, сколькоstringToCheck
содержит подстрокиstringArray
. Вы можете поставитьbreak
илиreturn
после назначения.Три варианта продемонстрированы. Я предпочитаю найти третий как наиболее сжатый.
источник