繁体   English   中英

Java-检查字符串是否仅包含某些字符(即DNA / RNA)

[英]Java - Check if a string only contains certain characters (i.e. DNA/RNA)

我在正则表达式方面苦苦挣扎。

我想做这样的事情:

if (sequence.matches(A|T|G|C)){
String type = "DNA"
}
elseif (sequence.matches(A|U|G|C)){
String type = "RNA"
}

因此,如果序列仅是A,T,G或C,则类型仅设置为DNA,而如果是A,U,G或C,则将类型设置为RNA

无论使用哪种编程语言,所需的正则表达式都应从头到尾测试字符串是否仅包含感兴趣的字符:

^[ACGT]+$

^表示“字符串开始”。 [ACGT]指示这4个字母之一。 +表示必须有一个或多个这些字符。 $表示“字符串结尾”。

因此,这意味着您的字符串中只能包含A,C,G或T,并且其中至少应包含一个。

正则表达式可能不是您最有效的选择:

static boolean consistsOf(String s, String of) {
  for ( int i = 0; i < s.length(); i++ ) {
    if ( of.indexOf(s.charAt(i)) == -1 ) {
      return false;
    }
  }
  return true;
}

您可以使用以下正则表达式

if (sequence.matches("[ATGC]+")) { // + for one or more occurrences, * for zero or more occurrences

其他检查也一样。

else if (sequence.matches("[AUGC]+")) { // + for one or more occurrences, * for zero or more occurrences

另外,您需要在双引号if(str.matches("strInDoubleQuotes"))指定String。

正常表达式为: "[ATGC]+"ATGC匹配。 表达式[ATGC]被称为输入字符串应[ATGC]匹配的字符类 表达式X+量词的一部分,表示表达式X出现一次或多次。

"ATCCGT".matches("[ATGC]+")

集合论将要求这种简化:

String type = (sequence.contains("U")) ? "RNA" : "DNA";    
String type = (sequence.contains("T")) ? "DNA" : "RNA";

没有? 坦白说,甚至不确定您是否需要2个表达式。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM