【发布时间】:2018-03-15 17:10:44
【问题描述】:
我正在尝试拆分以下格式的 latex.bib 文件:
@ARTICLE{
author={}
date={}
journal={}
}
@ARTICLE{
author={}
date={}
journal={}
}
我正在尝试使用 split() 来隔离文章,然后检查文章是否有空字段。这是我的代码:
try {
br = new BufferedReader(new FileReader("Latex1.bib"));
} catch (FileNotFoundException e) {
e.printStackTrace();
}
String line =null;
while((line = br.readLine())!=null) {
String [] info = line.split("@ARTICLE");
for(int x=0; x<info.length;x++) {
System.out.println(info[x]);
}
}
由于知道所有信息都被@ARTICLE{ } 包围,我似乎无法找到将文件拆分为文章的方法。有没有办法根据其封闭主体的已知格式将文件分割成段?
【问题讨论】:
-
你期待什么,你得到了什么?似乎它可能有点工作,即使它会产生空白空间和烦人的括号......
-
不,它显然可以工作,因为您正在逐行阅读,唯一可行的方法是首先将所有文件加载到字符串中,然后使用拆分。但是如果文件很大,这可能是个坏主意,相反,也许您应该自己处理字符流并使用状态(布尔值或枚举值)来跟踪您在流中的位置(例如
isInArticle或类似的东西)。 -
您可以使用 RegEx 吗?因为那真的会简化一切。
-
@AndreyTyukin 我明白了,我想要的是能够将每篇文章存储在一个单独的字符串中,然后在该字符串中搜索作者、日期、期刊等,最终将其转换为不同的书目格式。我似乎无法做到这一点。
-
@CoffeehouseCoder 这是我最初的计划,但不幸的是,我和我的教授谈过了,我只能使用 Scanner 和 IO 库。
标签: java regex string split io