如何使用 LinQ 搜索不在字符数组中的字符串

List<string> words = new List<string> { "abc", "acb", "cba", "cb a", "abf", "sea", "aba", "so ap", "a b c" }; 

string allowedChars = "abc";

我想检查列表字符串中的无效字符。我尝试使用 IndexOfAny() 但 IndexOfAny() 不检查空格。如何检查包含无效字符的字符串?


我想要的结果:“cb a”、“abf”、“sea”、“so ap”、“ab c”


慕婉清6462132
浏览 266回答 2
2回答

FFIVE

var&nbsp;invalid&nbsp;=&nbsp;words.Where(w&nbsp;=>&nbsp;!w.All(allowedChars.Contains));它检查每个单词中是否至少有一个字符不包含在allowedChars.这是相同的,但更详细一点:var&nbsp;invalid&nbsp;=&nbsp;words.Where(w&nbsp;=>&nbsp;w.Any(c&nbsp;=>&nbsp;!allowedChars.Contains(c)));如果找到第一个未包含的字符,两者都会停止执行。正如 Juharr 所指出的,如果允许使用多个字符,您可以通过使用 aHashSet<char>而不是 来提高效率String:var&nbsp;alloweCharSet&nbsp;=&nbsp;new&nbsp;HashSet<char>(allowedChars);

繁花不似锦

返回包含除 allowedChars 之外的任何其他字符的所有单词:var&nbsp;result&nbsp;=&nbsp;words.Where(w&nbsp;=>&nbsp;w.Except(allowedChars).Any());虽然这给出了预期的结果,但有人指出,这将通过调用 ExtSet为列表中的allowedChars每个创建一个新word的。这可能不会提供最佳性能。
打开App,查看更多内容
随时随地看视频慕课网APP