检查字符数组是否包含不同于允许的字符

时间:2018-05-11 21:45:07

标签: c# arrays char contains

我的问题是我有一个长度为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)。

问题是我不知道如何编写这种语法(如果这样做甚至可以这么简单的方式)。

1 个答案:

答案 0 :(得分:6)

LINQ非常适合:

char[] allowed = { 'A', 'T', 'C', 'G' };
if (word.Any(c => !allowed.Contains(c)))
{
    // BZZZZTT! Bad character in word
}