检查字符数组是否包含不同于允许的字符
Check if character array contains different than allowed characters
我的问题是我有一个长度为 4 的字符数组,它基本上表示一个单词(这个数组是 dictionary<char[],int>
中的一个键,不过这应该无关紧要)。
我需要检查这些单词是否仅由允许的字符组成,在本例中为 {A, T, C, G}。
因此以下所有单词都是有效的:AAAA、GGGG、GCGC、ATAT、ATGC、CCGA 等
虽然以下不会:AFGC、AAAS、TGCW 等
由于性能原因,我想避免转换为字符串。
我的想法是这样的:
if (word.Contains(!'ACTG'))
应该表示:If (array word contains different characters than A and/or C and/or T and/or G=> return false).
问题是我不知道如何明智地编写这种语法(如果这甚至可能以这种简单的方式完成的话)。
LINQ 非常适合这个:
char[] allowed = { 'A', 'T', 'C', 'G' };
if (word.Any(c => !allowed.Contains(c)))
{
// BZZZZTT! Bad character in word
}
我的问题是我有一个长度为 4 的字符数组,它基本上表示一个单词(这个数组是 dictionary<char[],int>
中的一个键,不过这应该无关紧要)。
我需要检查这些单词是否仅由允许的字符组成,在本例中为 {A, T, C, G}。
因此以下所有单词都是有效的:AAAA、GGGG、GCGC、ATAT、ATGC、CCGA 等
虽然以下不会:AFGC、AAAS、TGCW 等
由于性能原因,我想避免转换为字符串。 我的想法是这样的:
if (word.Contains(!'ACTG'))
应该表示:If (array word contains different characters than A and/or C and/or T and/or G=> return false).
问题是我不知道如何明智地编写这种语法(如果这甚至可能以这种简单的方式完成的话)。
LINQ 非常适合这个:
char[] allowed = { 'A', 'T', 'C', 'G' };
if (word.Any(c => !allowed.Contains(c)))
{
// BZZZZTT! Bad character in word
}