各位高手,我有一个文本文件,格式基本上是这样的:
[Term]
id: MI:0491
name: in silico
def: "Results generated by predictive bioinformatics approaches rather than experimental data.\nOBSOLETE as a full host organisms description is recommended using tax id == -1 as convention to refer to 'in vitro' interaction." [PMID:14755292]
related_synonym: "Predictive" []
is_obsolete: true
[Term]
id: MI:0489
name: source database
def: "Database that orignally provided the interaction record for exchange purposes." [PMID:14755292]
is_a: MI:0444 ! database citation
希望从这个文本文件中查找到每个[Term]中各个变量值如:得到name的值in silico,并将每个[Term]的各个变量记录下来
[Term]
id: MI:0491
name: in silico
def: "Results generated by predictive bioinformatics approaches rather than experimental data.\nOBSOLETE as a full host organisms description is recommended using tax id == -1 as convention to refer to 'in vitro' interaction." [PMID:14755292]
related_synonym: "Predictive" []
is_obsolete: true
[Term]
id: MI:0489
name: source database
def: "Database that orignally provided the interaction record for exchange purposes." [PMID:14755292]
is_a: MI:0444 ! database citation
希望从这个文本文件中查找到每个[Term]中各个变量值如:得到name的值in silico,并将每个[Term]的各个变量记录下来
name: source database
def: "Database that orignally provided the interaction record for exchange purposes." [PMID:14755292]
is_a: MI:0444 ! database citation你是说要得到id,name,def,purposes这几个后面的内容吗?
import java.io.BufferedReader;
import java.io.FileReader;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class Main {
public static void main(String[] args) throws Exception{
System.out.println(getIntArrayFromFile("f:\\test.txt"));
}
public static List<Map<String,String>> getIntArrayFromFile(String file) throws Exception{
List<Map<String,String>> list= new ArrayList<Map<String,String>>();
BufferedReader br=new BufferedReader(new FileReader(file));
String str=null;
Map<String,String> map=null;
while((str=br.readLine())!=null){
if("[Term]".equals(str.trim())){
if(map!=null&&map.size()>0){
list.add(map);
}
map=new HashMap<String,String>();
}else{
String[] array=str.split(":",2);
if(map!=null&&array.length==2){
map.put(array[0], array[1]);
}
}
}
br.close();
return list;
}
}
测试文件:test.txt[Term]
id: MI:0491
name: in silico
def: "Results generated by predictive bioinformatics approaches rather than experimental data.\nOBSOLETE as a full host organisms description is recommended using tax id == -1 as convention to refer to 'in vitro' interaction." [PMID:14755292]
related_synonym: "Predictive" []
is_obsolete: true
[Term]
id: MI:0489
name: source database
def: "Database that orignally provided the interaction record for exchange purposes." [PMID:14755292]
is_a: MI:0444 ! database citation
import java.io.*;
public class Test2
{
public static void main(String[] args) throws Exception{
BufferedReader br = null;
boolean start = false;
int num = 0;
List<String> array = new ArrayList<String>();
try{
br = new BufferedReader(new FileReader("test.txt"));
String s = null;
while((s = br.readLine().trim()) != null){
if(s.equals("[Term]")){
num++;
start = true;
}else if(num%2==0){
start =false;
num = 0;
}else if(start){
String[] str = s.split(":",2);
array.add(str[0]);
System.out.println(s);
//6楼能不能说下结果阈值的具体用法,是否表示分成两段
//我对API例子中的其它数值不大理解。
}
}
br.close();
}catch(Exception e){
}finally{
for(int i=0;i<array.size();i++)
System.out.print(array.get(i) + ",");
}
}
}