>1A3B:H|PDBID|CHAIN|SEQUENCE
IVEGSDAEIGMSPWQVMLFRKSPQELLCGASLISDRWVLTAAHCLLYPPWDKNFTENDLLVRIGKHSRTRYERNIEKISM
LEKIYIHPRYNWRENLDRDIALMKLKKPVAFSDYIHPVCLPDRETAASLLQAGYKGRVTGWGNLKETWTANVGKGQPSVL
QVVNLPIVERPVCKDSTRIRITDNMFCAGYKPDEGKRGDACEGDSGGPFVMKSPFNNRWYQMGIVSWGEGCDRDGKYGFY
THVFRLKKWIQKVIDQFGE
>1A3B:I|PDBID|CHAIN|SEQUENCE
GGQSHNDGDFEEIPEEYL
>1A3B:L|PDBID|CHAIN|SEQUENCE
TFGSGEADCGLRPLFEKKSLEDKTERELLESYIDGR
这是存储在文本文件中的数据。我如何严格地在
之间提取数据 ">1A3B:I|PDBID|CHAIN|SEQUENCE" and ">1A3B:L|PDBID|CHAIN|SEQUENCE",
仅限
">1A3B:I|PDBID|CHAIN|SEQUENCE"
我们知道。
此外,在这个给定的例子中,虽然要检索的数据只有一行,但它也可以变化多行。 到目前为止,我尝试将文件的整个内容写入字符串变量并使用子字符串,但由于结束索引未知,该逻辑似乎存在缺陷。请帮忙
import java.io. *;公共课ReadingChainSpecificFastaSequence {
public static void main(String[] args) { File file = new File("1A3B.fasta.txt"); BufferedInputStream bin = null; try { FileInputStream fin = new FileInputStream(file); bin = new BufferedInputStream(fin); byte[] contents = new byte[1024]; int bytesRead=0; String strFileContents=null; while( (bytesRead = bin.read(contents)) != -1){ strFileContents = new String(contents, 0, bytesRead); } // System.out.print(strFileContents); String search = ">1A3B:I|PDBID|CHAIN|SEQUENCE"; int start = (strFileContents.indexOf(search))+30; String search2= ">1A3B:L|PDBID|CHAIN|SEQUENCE"; int end= (strFileContents.indexOf(search2)); String result = strFileContents.substring(start,end); } catch(FileNotFoundException e) { System.out.println("File not found" + e); } catch(IOException ioe) { System.out.println("Exception while reading the file "+ ioe); } finally { try{ if(bin != null) bin.close(); }catch(IOException ioe) { System.out.println("Error while closing thestream:"+ioe); } } } }
答案 0 :(得分:0)
您似乎想要阅读每一行输入,并且:
\
,请将其拆分为此字符:
处将其分解以查找当前标记,将第一部分(1A3B
)保存到变量,将第二部分保存到另一个变量< / LI>
1A3B:L
)。1A3B:L
)开头。答案 1 :(得分:0)
将问题分解为更小,更容易定义的步骤。
您知道您的文件包含文件结尾,并且您知道您的文件使用了&gt;用于定义文本部分开头的符号。