我想读取文件并将每个条目添加到某个日期的arraylist中。但日期也应该包括在内。
文件示例:
15.09.2002你好,这是第一次参赛。
\这行,我还需要在第一个条目。
\这行,我还需要在第一个条目\这行,我还需要在第一个条目。
17.10.2020,这是下一个条目
我试过了。但读者只读第一行
public class versuch1 {
public static void main(String[] args) {
ArrayList<String> liste = new ArrayList<String>();
String lastLine = "";
String str_all = "";
String currLine = "";
try {
FileReader fstream = new FileReader("test.txt");
BufferedReader br = new BufferedReader(fstream);
while ((currLine = br.readLine()) != null) {
Pattern p = Pattern
.compile("[0-3]?[0-9].[0-3]?[0-9].(?:[0-9]{2})?[0-9]{2} [0-2]?[0-9]:[0-6]?[0-9]:[0-5]");
Matcher m = p.matcher(currLine);
if (m.find() == true) {
lastLine = currLine;
liste.add(lastLine);
} else if (m.find() == false) {
str_all = currLine + " " + lastLine;
liste.set((liste.indexOf(currLine)), str_all);
}
}
br.close();
} catch (Exception e) {
System.err.println("Error: " + e.getMessage());
}
System.out.print(liste.get(0) + " "+liste.get(1);
}
}
2条答案
按热度按时间kjthegm61#
在读这些行的时候,保留一个“当前条目”。
如果读取的行以日期开头,则它属于新条目。在这种情况下,将当前条目添加到条目列表中,并创建一个由读取行组成的新的当前条目。
如果行没有以日期开头,只需将其添加到当前条目中。
为此,您需要在循环之前将第一行读入当前条目。在循环之后,您需要将当前条目添加到条目列表中。只有在至少有一行并且第一行以日期开头时,这才起作用。所以对于没有线的特殊情况要特别处理(如果没有线就用)。如果第一行不是以日期开头,则报告错误。
快乐的编码。
mzaanser2#
我已经解决了我的问题:)
}