0

文字列内の複数の部分文字列を見つけるにはどうすればよいですか? 遺伝子配列と比較してみましょう。文字列があります: TTCGAGATGCTGATTGACATGTTAGTAG。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」を見つけるとすぐに実行を停止します

4

2 に答える 2

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 "";
}
于 2013-01-13T08:47:36.500 に答える
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 に変更できます。

于 2013-01-13T09:09:01.273 に答える