StringBuilder.indexOf ()를 사용하여 발생하는 문자열의 모든 위치 가져 오기

Smunfr

여기 자바 초보자. 저는 현재 인간 DNA의 일부를 검색하는 프로그램을 작업 중입니다. 특히 StringBuilder.indexOf ()를 사용하여 StingBuilder 내에서 String의 모든 발생을 찾고 싶습니다. 그러나 나는 첫 번째뿐만 아니라 모든 발생이 필요합니다.

암호:

public void search(String motive){
    int count = 0;
    gene.indexOf(motive);   // gene is the Stringbuilder
    count++;


}

나는 StringBuilder 유전자의 모든 동기와 유전자에 동기가 얼마나 자주 있는지 카운터가 필요합니다. indexOf ()가 첫 번째 항목 만 표시하므로 도움이 필요하십니까?

Frelling

나는 당신이 유전자 서열 또는 하위 서열 내에서 특정 뉴클레오티드 서열의 인덱스를 찾고 있다고 생각합니다. 다음 예제 클래스는이를 찾기 위해 Java의 정규식 라이브러리를 사용하는 일반적인 접근 방식을 보여줍니다.

package jcc.tj.dnamatch;

import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Gene {
   private String gene;

   public Gene() {}

   public Gene( String gene ) {
      this.gene = gene;
   }

   public List<Integer> find( String seq ) {
      List<Integer> indices = new ArrayList<Integer>();

      Pattern pat = Pattern.compile( seq );
      Matcher m = pat.matcher( gene );

      while ( m.find() )
         indices.add( m.start() );

      return indices;
   }

   public String getGene() {
      return gene;
   }

   public void setGene( String gene ) {
      this.gene = gene;
   }
}

위의 예에서는 Matcher를 사용하여 패턴을 찾습니다. 더 효율적인 다른 문자열 기반 알고리즘이 있지만 시작점으로 Matcher는 모든 유형의 텍스트 패턴 검색에 대한 일반적인 솔루션을 제공합니다.

뉴클레오티드를 문자 (ATCG)로 인코딩하는 것은 매우 유연하고 편리하므로 문자열 기반 도구를 사용하여 시퀀스 및 / 또는 하위 시퀀스를 분석하고 특성화 할 수 있습니다. 불행히도 그들은 잘 확장되지 않습니다. 이러한 경우 서열을 표현하고 관리하기 위해보다 구체적인 생물 정보학 기술을 고려하는 것이 좋습니다.

특정 기술에 대한 좋은 참고 자료는 Next Generation Sequencing Technologies and Challenges in Sequence Assembly 책의 Chapter 2 – Algorithms and Data Structures in Next-Generation Sequencing을 참조하십시오 . 더 자세한 PDF 미리보기는 Google 링크 에서 볼 수 있습니다 . 영원히 작동한다고 보장하지는 않겠지 만.

BioJava 를 살펴볼 수도 있습니다 . Java에서 당신을 훼손하고 싶지는 않지만 Perl은 시퀀스 분석을위한 또 다른 좋은 대안입니다. Bioinformatics를위한 Perl 시작 ; Perl 및 생물 정보학 ; 또는 BioPerl .

나는이 대답이 TMI 일 수 있다는 것을 알고 있습니다. 그러나 그것이 당신이나 다른 사람들이 더 적절한 해결책을 찾는 데 도움이된다면 그것은 그 목적을 달성했습니다.

편집하다:

아래의 설명에 따르면, 검색이에 의해 수행되어야한다는 요구 사항을 감안할 때 이것은 숙제 질문으로 보입니다 StringBuilder.indexOf(). 다음 방법은 그에 따라 검색을 수행합니다.

public List<Integer> findBySb( String seq ) {
    List<Integer> indices = new ArrayList<Integer>();
    StringBuilder sb = new StringBuilder( gene );
    int strIdx = 0;

    while ( strIdx < sb.length() ) {
        int idx = sb.indexOf( seq, strIdx );
        if ( idx == -1 )
            break;
        indices.add( idx );
        strIdx = idx + seq.length();
    }

    return indices;
}

동일한 indexOf()접근 방식을 문자열에 직접 사용할 수 있습니다.

public List<Integer> findByString( String seq ) {
    List<Integer> indices = new ArrayList<Integer>();
    int strIdx = 0;

    while ( strIdx < gene.length() ) {
        int idx = gene.indexOf( seq, strIdx );
        if ( idx == -1 )
            break;
        indices.add( idx );
        strIdx = idx + seq.length();
    }

    return indices;
}

모두 StringBuilderString같은 정적 구현을 사용 String.indexOf()하여 기능적으로 차이가 없다. 그러나 StringBuilder검색을 위해 인스턴스화하는 것은 과도하고 문자열 작업을 관리하기 위해 버퍼를 할당하기 때문에 조금 더 낭비입니다. 나는 계속할 수 있지만 대답에 추가되지는 않습니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

JavaScript를 사용하여 문자열 키와 일치하는 배열에서 모든 개체 가져 오기

분류에서Dev

LIKE를 사용하여 하위 문자열 가져 오기

분류에서Dev

rdflib를 사용하여 DB의 모든 관계 가져 오기

분류에서Dev

ARRAYFORMULA를 사용하여 문자열의 하위 집합 가져 오기

분류에서Dev

SelectionStart를 사용하여 텍스트의 하위 문자열 가져 오기

분류에서Dev

Java를 사용하여 Hbase의 모든 행의 모든 값 가져 오기

분류에서Dev

Scala를 사용하여 XML 파일의 모든 하위 및 하위 하위 항목을 가져 오는 방법

분류에서Dev

재귀를 사용하여 하위 문자열의 모든 발생을 다른 하위 문자열로 바꾸기

분류에서Dev

각 문자열의 평균을 가져 오는 동안 파일에있는 모든 문자열의 발생 수를 계산하는 방법

분류에서Dev

jQuery를 사용하여 문자열에서 마지막 문자 위치로 두 번째 가져 오기

분류에서Dev

특정 범위 클래스를 사용하여 페이지의 모든 요소 가져 오기 Python Selenium

분류에서Dev

facebook javascript sdk를 사용하여 사용자 위치 가져 오기

분류에서Dev

문자열의 모든 위치에서 하나의 기호가 발생하는 것을 허용하는 정규식?

분류에서Dev

두 개의 다른 문자 android 사이의 URL에서 모든 하위 문자열 가져 오기

분류에서Dev

해당 목록의 첫 번째 멤버에서 특정 문자가 발생하는 위치를 기준으로 목록의 모든 문자열에서 문자를 제거하는 방법은 무엇입니까?

분류에서Dev

JPA-여러 문자열과 일치하는 모든 행 가져 오기

분류에서Dev

rs.next ()를 사용하여 모든 배열 요소 가져 오기

분류에서Dev

xmlstarlet / xpath를 사용하여 모든 자식 이름 가져 오기

분류에서Dev

몽구스를 사용하여 모든 문서에 대한 배열의 객체 고유 값 가져 오기

분류에서Dev

Objective-C를 사용하여 Mac의 모든 IP 주소 가져 오기

분류에서Dev

Javascript를 사용하여 모든 확인란의 값 가져 오기

분류에서Dev

jquery를 사용하여 선택한 모든 요소의 색인 가져 오기

분류에서Dev

Linq를 사용하여 DataTable의 모든 DBNull 셀 목록 가져 오기

분류에서Dev

LINQ를 사용하여 목록의 모든 DISTINCT 항목 가져 오기

분류에서Dev

Rest를 사용하여 모든 Azure RM VM의 상태 가져 오기

분류에서Dev

찾기를 사용하여 모든 레코드 가져 오기

분류에서Dev

이전에 정의 된 문자열 집합과 일치하는 문자열의 모든 접두사를 가져 오는 효율적인 구조

분류에서Dev

Google Admin SDK를 사용하여 기기 위치 가져 오기

분류에서Dev

SQL 가져 오기 파일을 채우는 데 사용되는 한 줄당 문자열의 발생 수를 계산하는 메모장 ++

Related 관련 기사

  1. 1

    JavaScript를 사용하여 문자열 키와 일치하는 배열에서 모든 개체 가져 오기

  2. 2

    LIKE를 사용하여 하위 문자열 가져 오기

  3. 3

    rdflib를 사용하여 DB의 모든 관계 가져 오기

  4. 4

    ARRAYFORMULA를 사용하여 문자열의 하위 집합 가져 오기

  5. 5

    SelectionStart를 사용하여 텍스트의 하위 문자열 가져 오기

  6. 6

    Java를 사용하여 Hbase의 모든 행의 모든 값 가져 오기

  7. 7

    Scala를 사용하여 XML 파일의 모든 하위 및 하위 하위 항목을 가져 오는 방법

  8. 8

    재귀를 사용하여 하위 문자열의 모든 발생을 다른 하위 문자열로 바꾸기

  9. 9

    각 문자열의 평균을 가져 오는 동안 파일에있는 모든 문자열의 발생 수를 계산하는 방법

  10. 10

    jQuery를 사용하여 문자열에서 마지막 문자 위치로 두 번째 가져 오기

  11. 11

    특정 범위 클래스를 사용하여 페이지의 모든 요소 가져 오기 Python Selenium

  12. 12

    facebook javascript sdk를 사용하여 사용자 위치 가져 오기

  13. 13

    문자열의 모든 위치에서 하나의 기호가 발생하는 것을 허용하는 정규식?

  14. 14

    두 개의 다른 문자 android 사이의 URL에서 모든 하위 문자열 가져 오기

  15. 15

    해당 목록의 첫 번째 멤버에서 특정 문자가 발생하는 위치를 기준으로 목록의 모든 문자열에서 문자를 제거하는 방법은 무엇입니까?

  16. 16

    JPA-여러 문자열과 일치하는 모든 행 가져 오기

  17. 17

    rs.next ()를 사용하여 모든 배열 요소 가져 오기

  18. 18

    xmlstarlet / xpath를 사용하여 모든 자식 이름 가져 오기

  19. 19

    몽구스를 사용하여 모든 문서에 대한 배열의 객체 고유 값 가져 오기

  20. 20

    Objective-C를 사용하여 Mac의 모든 IP 주소 가져 오기

  21. 21

    Javascript를 사용하여 모든 확인란의 값 가져 오기

  22. 22

    jquery를 사용하여 선택한 모든 요소의 색인 가져 오기

  23. 23

    Linq를 사용하여 DataTable의 모든 DBNull 셀 목록 가져 오기

  24. 24

    LINQ를 사용하여 목록의 모든 DISTINCT 항목 가져 오기

  25. 25

    Rest를 사용하여 모든 Azure RM VM의 상태 가져 오기

  26. 26

    찾기를 사용하여 모든 레코드 가져 오기

  27. 27

    이전에 정의 된 문자열 집합과 일치하는 문자열의 모든 접두사를 가져 오는 효율적인 구조

  28. 28

    Google Admin SDK를 사용하여 기기 위치 가져 오기

  29. 29

    SQL 가져 오기 파일을 채우는 데 사용되는 한 줄당 문자열의 발생 수를 계산하는 메모장 ++

뜨겁다태그

보관