2013-01-13 6 views
0

문자열 내부에 여러 부분 문자열을 어떻게 찾을 수 있습니까? 유전자 시퀀싱과 비교해 봅시다. 문자열이 있습니다 : TTCGAGATGCTGATTGACATGTTAGTAG. 나는 내 시퀀스의 시작 (ATG는 시작점)을 찾는 방법과 TGA만을 사용하는 시퀀스의 끝을 찾는 방법을 알아 냈습니다. 나는 TAA와 TGA 과정을 반복하는 법을 알 수 없다. 내 코드 행에 3 개의 하위 문자열을 모두 포함 할 수 있습니까?문자열에 문자열이있는 경우/java

중첩 된 if 문을 사용하고 있으며 위의 코드 줄에 몇 가지 사항을 추가하려고 시도했지만 아무 것도 얻지 못했습니다! 필자는 매개 변수를 복사/붙여 넣기 및 변경할 수 있지만 행에 여러 시퀀스가있는 경우 그 중 하나를 찾아 낼 수는 없습니다. 내가 위의 문자열에서 얻을 싶은 것은 : TTCGAG * ATG * C * TGA * TTGAC * ATG * T * TAG * TAG 나는 인쇄 할 수있는 C를 얻을 수 있지만, 그것을 할 수 없습니다 T. "C"

+1

예상 출력을 주면이 질문에 답하기가 더 쉬울 것이라고 생각합니다. –

+0

또는 전체 코드가 도움이 될 수도 있습니다 (최소한 구문 분석에 관한 도움말) – Najzero

+1

[이 라이브러리의 메서드가 문제를 해결할 것이라고 생각합니다.] (http://commons.apache.org/lang/ api-2.5/org/apache/commons/lang/StringUtils.html # countMatches % 28java.lang.String, % 20java.lang.String % 29) 필요한 것이 아니라면, 아마도 StringUtils의 다른 메소드가 당신. –

답변

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 ""; 
} 
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 (. *?) 태그로 바꿀 수 있습니다.