我正在尝试编写一个小型Java应用程序,其部分工作是从文本文件中读取,写入和解析行。我的问题是从文本文件中取一行,读取它,并将其分成几部分。例如,示例行是:
Tuesday, 11/11/14 10:30:32: 3.93
我希望我的程序能够查看此内容并填写例如string day = "tuesday"
和value = 3.93
。
FileReader fileReader = new FileReader(itemValue);
BufferedReader bufferedReader = new BufferedReader(fileReader);
StringBuffer stringBuffer = new StringBuffer();
String line;
while ((line = bufferedReader.readLine()) != null) {
stringBuffer.append(line + "\n");
int[] value;
}
fileReader.close();
System.out.println("Contents of file:");
System.out.println(stringBuffer.toString());
这是我目前的代码 - 它将解析我的文件并逐行打印到控制台,但我真的不知道如何实际处理该行。我已经尝试使用bufferedReader.readLine作为包含该行的变量,但这似乎不是答案。我对Java非常陌生,这是我编程中的一个重大障碍,所以如果有人能指出我的解决方案,那将是非常棒的。提前致谢! :)
编辑:我的所有数据看起来都完全相同,其余部分就是一样。
Tuesday, 11/11/14 10:29:23: 4.48
Tuesday, 11/11/14 10:29:27: 5.0
Tuesday, 11/11/14 10:29:39: 5.95
Tuesday, 11/11/14 10:29:46: 6.0
Tuesday, 11/11/14 18:07:25: 4.0
Tuesday, 11/11/14 18:07:27: 4.5
Tuesday, 11/11/14 18:07:33: 5.0
Tuesday, 11/11/14 18:07:39: 5.9
Tuesday, 11/11/14 18:07:51: 20.0
答案 0 :(得分:2)
您可以尝试使用分隔符按空格分隔每一行。
String line;
while ((line = bufferedReader.readLine()) != null) {
String values[] = line.split("\\s+");
}
这为您提供了一些处理行中每一位数据的起点。正如Jason在评论中指出的那样,它可以根据实施情况而有很大差异。
在这种情况下,例如,您可以将每个values[]
中的最后一项解析为double。这取决于你。
答案 1 :(得分:1)
解析此类数据的两种最流行的方法是String.split()
,并使用正则表达式。
使用String.split()
,您可能会执行以下操作:
while ((line = bufferedReader.readLine()) != null) {
String[] parts = line.split("\\s+");
// now each part of the input line (separated by whitespace) is in a different element of the parts array
}
如果您选择使用正则表达式,并且您想要第一个和最后一个部分,则可以尝试使用正则表达式:
^(A-Za-z), .*? (0-9\.)$
当然还需要执行其他代码。谷歌搜索"正则表达式"。