所以我有一个包含多个开始标记和结束标记的字符串。如何创建仅保留开始和结束标记之间的段的代码?
一个很好的例子就是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;
}
答案 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
TAC
和ACT
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