Могу ли я проверить, содержит ли строка элемент массива? - PullRequest
0 голосов
/ 24 марта 2019

Попытка найти более эффективный способ проверить, содержит ли строка слова (строки) из массива.

У меня есть список строк. Когда я зацикливаюсь на них, я хочу проверить, есть ли в текущей строке какие-то конкретные слова. Для хранения этих слов я использую массив строк. Итак, мне было интересно, был ли способ с linq? (Или просто более эффективный способ) Что-то вроде string.Any() для строк?

Я сделал это с помощью петель, но лично мне это не нравится: Прежде всего, основной список и массив:

List<string> lista = new List<string>() {"\r\n", "<p>This is a paragrath</p>", "<h2>This is a subheader</h2>", "\r\n" };
string[] arr = new string[] {"<h1>","<h2>","<h3>","<p>" };

Теперь я иду в петли:

for(int i = 0; i < lista.Count; i++)
{
  if(lista[i] != "\r\n")
    for(int j = 0; j < arr.Length; j++)
    {
      if(lista[i].Contains(arr[j]))
      {
        ...
      }
    }
}

Как я уже говорил выше, мне это не нравится. Есть ли другой метод?

Ответы [ 2 ]

3 голосов
/ 24 марта 2019

Это даст вам все элементы в lista, которые в списке содержат один элемент arr:

string[] result = lista.Where(x => arr.Any(a => x.Contains(a)).ToArray()
0 голосов
/ 24 марта 2019

Написано в синтаксисе linq. Я думаю, что это немного более читабельно.

var allThatContainTags = from html in lista
                         where html != "\r\n" && arr.Any(html.Contains)
                         select html;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...