我可以检查字符串中是否包含数组的元素吗?

时间:2019-03-24 00:18:01

标签: c# arrays string list linq

试图找到一种更有效的方法来检查字符串是否包含数组中的单词(字符串)。

我有一个字符串列表。在遍历它们时,我想检查当前字符串中是否包含某些特定的单词。为了存储这些单词,我使用了一个字符串数组。所以,我想知道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 个答案:

答案 0 :(得分:3)

这将为您提供lista中的所有项目,列表中包含arr的一个元素:

string[] result = lista.Where(x => arr.Any(a => x.Contains(a)).ToArray()

答案 1 :(得分:0)

我使用linq语法编写,我认为它更具可读性。

var allThatContainTags = from html in lista
                         where html != "\r\n" && arr.Any(html.Contains)
                         select html;