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”、“a b c”

最佳答案

var invalid = words.Where(w => !w.All(allowedChars.Contains));

它检查每个单词中是否至少有一个字符不包含在 allowedChars 中。

这是相同的,但更详细一点:
var invalid = words.Where(w => w.Any(c => !allowedChars.Contains(c)));

如果找到第一个未包含的字符,两者都会停止执行。

正如 Juharr 所指出的,如果允许使用多个字符,您可以通过使用 HashSet<char> 而不是 String 来提高效率:
var alloweCharSet = new HashSet<char>(allowedChars);

关于c# - 如何使用 LinQ 搜索不在字符数组中的字符串,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51767130/

10-13 06:23
查看更多