使用java在字符串中查找子字符串

使用java在字符串中查找子字符串,java,string,substring,Java,String,Substring,如何在字符串中找到多个子字符串?让我们将其与基因测序进行比较。您有一个字符串:TTCGAGATGCTGATGCATGTTAGGTAG。我已经知道了如何只使用TGA找到序列的开始(ATG是起点)和结束。我不知道如何对TAA和TGA重复这个过程。有可能让我的代码行中的所有3个子字符串寻找我的端点吗 String genome = input.nextLine(); //first check: see if the genome contains the marker "ATG"

如何在字符串中找到多个子字符串?让我们将其与基因测序进行比较。您有一个字符串:TTCGAGATGCTGATGCATGTTAGGTAG。我已经知道了如何只使用TGA找到序列的开始(ATG是起点)和结束。我不知道如何对TAA和TGA重复这个过程。有可能让我的代码行中的所有3个子字符串寻找我的端点吗

String genome = input.nextLine();
    //first check: see if the genome contains the marker "ATG"  
    if (genome.contains("atg")){
    //if the genome contains "ATG" marker, begin second test: see if the   genome contains the marker "TAG"
    if (genome.contains("tag"))
我正在使用嵌套的if语句,并尝试向上面的代码行添加一些内容,但没有得到任何结果!我知道我可以复制/粘贴和更改参数,但如果行中有多个序列,我就无法找出那个序列。我想从上面的字符串中得到的是:TTCGAG*ATG*C*TGA*TTGAC*ATG*T*TAG*TAG
我可以让C打印,但无法打印到t。我的程序一找到第一个子字符串“C

就停止运行。我不确定我是否理解了这个问题,但可能这与您所寻找的内容很接近

String getSubstringBetween(String start, String[] ends) {
    int indexOfStart = genome.indexOf(start);
    if(indexOfStart >= 0) {
       int indexOfEnd = -1;
       int i = 0;
       while(i < ends.length() && indexOfEnd < 0) {
          indexOfEnd = genome.indexOf(ends[i++], indexOfStart);
       }
       if(indexOfEnd >= 0) {
          String end = ends[i - 1];
          return genome.substring(indexOfStart, indexOfEnd + end.length());
       } else {
          return genome.substring(indexOfStart);
       }
    }
    return "";
}
String getSubstringBetween(字符串开始,字符串[]结束){
int indexOfStart=genome.indexOf(start);
如果(indexOfStart>=0){
int indexOfEnd=-1;
int i=0;
而(i=0){
字符串结束=结束[i-1];
返回genome.substring(indexOfStart,indexOfEnd+end.length());
}否则{
返回基因组子串(indexOfStart);
}
}
返回“”;
}

您可以使用正则表达式,对于序列ATG…TGA,您可以尝试

String input = "TTCGAGATGCTGATTGACATGTTAGTAG";
Pattern pattern  = Pattern.compile("ATG(.*?)TGA");
Matcher matcher = pattern.matcher(input);
while (matcher.find()) {
    System.out.println(matcher.group(1));
}
你会得到“C”


如果您想在发布的问题中得到“T”,您可以将正则表达式更改为ATG(.*)标记,因为前缀和后缀明显不同。

如果您给出了预期的输出,我认为这个问题会更容易回答。或者完整的代码可能也会有所帮助(至少是关于解析的代码),如果这不是您需要的,StringUtils中可能还有另一种方法适合您。我认为
regex
会满足您的需要