[英]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)))
中,將x
和value
相互替換:
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
描述:
Enumerable.Where
方法:根據謂詞過濾一系列值。Enumerable.Any
方法:確定序列的任何元素是否存在或是否滿足條件。Enumerable.ToArray
方法:從 IEnumerable 創建一個數組。String.Contains(String)
方法:返回一個值,該值指示指定的 substring 是否出現在此字符串中。不是最有效的,但有效。
newList = listToTest.Where((x) =>
{
return WordList.Where(x2 => x.IndexOf(x2) != -1).Count() == 0;
}).ToList();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.