C# 检查字符数组是否包含不同于允许的字符
我的问题是,我有一个长度为4的字符数组,基本上代表一个单词(这个数组是C# 检查字符数组是否包含不同于允许的字符,c#,arrays,char,contains,C#,Arrays,Char,Contains,我的问题是,我有一个长度为4的字符数组,基本上代表一个单词(这个数组是字典中的一个键,但这不重要)。 我需要检查这些单词是否仅由允许的字符组成,在本例中为{A,T,C,G} 所以下面所有的单词都是有效的:AAAA,GGGG,GCGC,ATAT,ATGC,CCGA等等 但以下情况不会出现:AFGC、AAAS、TGCW等 由于性能原因,我希望避免转换为字符串。 我的想法是这样的: if (word.Contains(!'ACTG')) 其中应该表示:If(数组字包含与A和/或C和/或T和/或G不同
字典中的一个键,但这不重要)。
我需要检查这些单词是否仅由允许的字符组成,在本例中为{A,T,C,G}
所以下面所有的单词都是有效的:AAAA,GGGG,GCGC,ATAT,ATGC,CCGA等等
但以下情况不会出现:AFGC、AAAS、TGCW等
由于性能原因,我希望避免转换为字符串。
我的想法是这样的:
if (word.Contains(!'ACTG'))
其中应该表示:If(数组字包含与A和/或C和/或T和/或G不同的字符=>返回false)
问题是我不知道如何编写这种语法(如果可以用这么简单的方式编写的话)。LINQ非常适合:
char[] allowed = { 'A', 'T', 'C', 'G' };
if (word.Any(c => !allowed.Contains(c)))
{
// BZZZZTT! Bad character in word
}
LINQ在这方面很出色:
char[] allowed = { 'A', 'T', 'C', 'G' };
if (word.Any(c => !allowed.Contains(c)))
{
// BZZZZTT! Bad character in word
}
谢谢,这似乎是我一直在寻找的解决方案。谢谢,这似乎是我一直在寻找的解决方案。