如何在字符串中找到多个子字符串?让我们将它与基因测序进行比较。你有一个字符串:TTCGAGATGCTGATTGACATGTTAGTAG。我已经想出如何找到我的序列的开始(ATG是起点)和仅使用TGA的序列结束。我无法弄清楚如何重复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 ”
后立即停止运行答案 0 :(得分:0)
我不确定我是否理解了这个问题,但也许这与您正在寻找的内容很接近。
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 "";
}
答案 1 :(得分:0)
您可以使用正则表达式,对于序列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(。*?)TAG,因为前缀和后缀有很大不同。