测试字符串值是否包含在字符串数组中

test if string value is contained in array of strings

你好,我有一个单词列表,如果找到这个单词,我想从我的数组中删除值

private static string[] WordList = { "Example No", "Name", "Client ID"};

var listToTest = new[] { "ME 0.3", "Example No.: 1243", "Name.:"};

var newList= new List<string>();
foreach (var value in listToTest)
{
    if (!WordList.Any(x => x.Contains(value)))
    {
        newList.Add(value);
    }
 }

return newList.ToArray();

我的测试return我只想要它的所有值return “ME 0.3”

!WordList.Any(x => x.Contains(value)) 将 return true 如果 WordList 中没有元素包含 valuefalse 如果至少有一个元素WordList 包含 value.

因此您的代码将 return 一个 listToTest 元素数组,WordList 中没有元素包含它们,但正如您所说,您想要一个 [= 元素数组19=] 它们不包含 WordList 的元素。所以在 ... x.Contains(value))) 中将 xvalue 相互替换:

private static string[] WordList = { "Example No", "Name", "Client ID"};

var listToTest = new[] { "ME 0.3", "Example No.: 1243", "Name.:"};

var newList= new List<string>();
foreach (var value in listToTest)
{
    if (!WordList.Any(x => value.Contains(x)))
    {
        newList.Add(value);
    }
 }

return newList.ToArray();

顺便说一句,有一个更简洁的方法:

var result = listToTest.Where(x => !WordList.Any(y => x.Contains(y))).ToArray();

// Usage:
foreach (var s in result)
    Console.WriteLine(s);

// Output:
// ME 0.3

描述:

不是最有效的,但有效。

  newList = listToTest.Where((x) =>
  {
      return WordList.Where(x2 => x.IndexOf(x2) != -1).Count() == 0;
  }).ToList();