如何删除字符串的特定部分

时间:2016-02-24 06:09:19

标签: java substring

所以我有一个包含多个开始标记和结束标记的字符串。如何创建仅保留开始和结束标记之间的段的代码?

一个很好的例子就是DNA转录。

因此起始标记为TAC,结束标记为ACT。 我有一个字符串:AGA TACACGACT AGCGAGC TACGATACT ACC。

我知道如何使用子字符串方法,但不够好,以便将字符串剪切为: TACACGACTTACGATACT。

我该怎么做?

编辑:我通过编写这个方法解决了这个问题:

private String spliceString(String n){
    int counter1 = 0;
    int startloc = 0;
    int endloc = 0;
    String m = "";
    while (n.indexOf("TAC",counter1) != -1){
        startloc = n.indexOf("TAC",counter1);
        if (n.indexOf("ACT", counter1) != -1){
            endloc = n.indexOf("ACT", counter1);
        }
        else if (n.indexOf("ATT", counter1) != -1){
            endloc = n.indexOf("ATT", counter1);
        }
        else if (n.indexOf("ATC", counter1) != -1){
            endloc = n.indexOf("ATC", counter1);
        }
        else {
            return "AAAA"; //Returns a error string. This will be caught in another method that is not relevant.
        }
        m = m + n.substring(startloc,endloc + 3);
        counter1 = endloc + 1;
    }
    System.out.println(m); //Just prints out so to check if the code worked
    return m;
}

2 个答案:

答案 0 :(得分:0)

为此,正则表达式是你的朋友。

一种方法是搜索您要保留的内容,并在ArrayList中收集。

StringBuilder

有关正在运行的代码,请参阅IDEONE

有关正则表达式的详细信息,请阅读String input = "AGATACACGACTAGCGAGCTACGATACTACC"; StringBuilder buf = new StringBuilder(); Matcher m = Pattern.compile("TAC.*?ACT").matcher(input); while (m.find()) buf.append(m.group()); String output = buf.toString(); System.out.println(output); // prints: TACACGACTTACGATACT 的{​​{3}}。

或者,删除您不想保留的内容,即

  • 首先发送文字Pattern
  • TACACT
  • 之间的文字
  • 最后TAC
  • 后的文字

代码更简单,但正则表达式更复杂一些:

ACT

请参阅javadoc了解颜色编码的好例子。

答案 1 :(得分:0)

Java - String substring()方法

说明

此方法有两个变体,并返回一个新字符串,该字符串是此字符串的子字符串。子字符串以指定索引处的字符开头,并延伸到此字符串的末尾或者延伸到endIndex - 1如果给出第二个参数。

<强>语法:

以下是此方法的语法:

public String substring(int beginIndex)

public String substring(int beginIndex,int endIndex)

<强>参数:

以下是参数的详细信息:

beginIndex - 开头索引,包括在内。

endIndex - 结束索引,独占。

返回值 指定的子字符串。

示例:

import java.io.*;

public class Test{
   public static void main(String args[]){
      String Str = new String("Welcome to Tutorialspoint.com");

      System.out.print("Return Value :" );
      System.out.println(Str.substring(10) );

      System.out.print("Return Value :" );
      System.out.println(Str.substring(10, 15) );
   }
}

这会产生以下结果:

Return Value : Tutorialspoint.com
Return Value : Tuto