我的问题是我有一个长度为4的字符数组,它基本上代表一个单词(这个数组是dictionary<char[],int>
中的一个键,但这应该不重要)。
我需要检查这些单词是否仅包含允许的字符,在本例中为{A,T,C,G}。
所以以下所有词都是有效的:AAAA,GGGG,GCGC,ATAT,ATGC,CCGA等。
虽然以下不会:AFGC,AAAS,TGCW等。
我希望避免因为性能而转换为字符串。 我的想法是这样的:
if (word.Contains(!'ACTG'))
哪个shoudl代表:If(数组字包含的字符不同于A和/或C和/或T和/或G =&gt;返回false)。
问题是我不知道如何编写这种语法(如果这样做甚至可以这么简单的方式)。
答案 0 :(得分:6)
LINQ非常适合:
char[] allowed = { 'A', 'T', 'C', 'G' };
if (word.Any(c => !allowed.Contains(c)))
{
// BZZZZTT! Bad character in word
}