簡體   English   中英

測試字符串值是否包含在字符串數組中

[英]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();

我的測試返回我只希望它返回“ME 0.3”的所有值

如果 WordList 中沒有元素包含value.WordList.Any(x => x.Contains(value))將返回true ,如果WordList中至少有一個元素包含value ,則WordList false

因此,您的代碼將返回 listToTest 的元素數組, listToTest中的任何元素WordList包含它們,但是正如您所說,您想要listToTest的元素數組,它們不包含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();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM