我将首先发布文本文件中的数据是什么样的,这只是其中的 4 行,实际文件有几百行长。
Friday, September 9 2011 5:00AM - 11:59PM STH 1102 HOLD DO NOT BOOK
Report Printed on 9/08/2011 at 2:37 PM Page 1 of 1
Friday, September 9 2011 5:00AM - 11:00PM STH 4155 (BOARDROOM) HOLD - DO NOT BOOK
Hold - Do Not Book Report Printed on 9/08/2011 at 2:37 PM Page 1 of 1
Friday, September 9 2011 5:00AM - 11:59PM UC 2 (COMPUTER LAB) HOLD DO NOT BOOK
do not book Report Printed on 9/08/2011 at 2:37 PM Page 1 of 1
Friday, September 9 2011 5:00PM - 11:00PM AH GYM USC ORIENTATION 2011 - REVISED
USC Orientation 2011 Report Printed on 9/08/2011 at 2:37 PM Page 1 of 1
每个小文本部分都在文本文件中的一行上,由许多空格隔开,由于某种原因,这些空格不会出现在问题格式中,我将使用第一部分文本作为我试图获取的数据的示例。
这是我想从文件中获取的数据Friday
, 5:00
, 11:59
, STH 1102
, HOLD DO NOT BOOK
, 然后忽略该行的读取,文本部分第 2 行的所有信息也被忽略,但在文本文件本身中它是全部在一条线上。然后使用这些数据,我想将每一块保存到一个变量中。或者相反,数据的一部分HOLD DO NOT BOOK
有时会像这样格式化:DO NOT BOOK
, HOLD - DO NOT BOOK
,如果正则表达式找到任何这些,它可以忽略该行之前和之后的所有数据。
另外,如果您可以的话,我想将其中包含 PM 的时间加到 12 中,以便它们采用 24 小时格式。
这是我目前完全阅读这些行的方式。然后,一旦用户将路径放入 scheduleTxt JTextfield 中,我就调用此函数。它可以很好地读取和打印每一行。
public void readFile () throws IOException
{
try
{
FileInputStream fstream = new FileInputStream(scheduleTxt.getText());
DataInputStream in = new DataInputStream(fstream);
BufferedReader br = new BufferedReader(new InputStreamReader(in));
String strLine;
while ((strLine = br.readLine()) != null)
{
System.out.println (str1);
}
in.close();
}
catch (Exception e){
System.err.println("Error: " + e.getMessage());
}
}
我知道这个问题,希望你明白我在问什么,如果有不清楚的地方问,谢谢!牛肉。
更新:我只是想也许这有助于解释我对这些数据的意图,首先我会将任何 PM 时间转换为 24 小时格式,然后根据第 4 条数据(STH 1102
)我调用一个插入函数,它将使用ODBC 驱动程序,以便将行中的其他数据插入数据库