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”
答案 0 :(得分:9)
2.0 (22.04.2016)
~~~~~~~~~~~~~~~~
* Fix: prefetch_related on a ClusterTaggableManager no longer fails (but doesn't prefetch either)
它会检查每个单词中是否有至少一个不包含在var invalid = words.Where(w => !w.All(allowedChars.Contains));
中的字符。
这是相同的,但有点冗长:
allowedChars
如果他们发现第一个不包含的字符,则停止执行。
如Juharr所指出的那样,如果允许使用许多字符,则可以使用var invalid = words.Where(w => w.Any(c => !allowedChars.Contains(c)));
代替HashSet<char>
来提高效率:
String
答案 1 :(得分:3)
返回所有包含除allowedChars外的其他字符的单词:
X-SENDFILE
尽管这样做可以达到预期的结果,但有人指出,这将通过调用Except为列表中的每个var result = words.Where(w => w.Except(allowedChars).Any());
的{{1}}创建一个新的Set
。这可能无法提供最佳性能。