[英]What is the best way to parse a line using Java?
我正在嘗試編寫一個小型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
您可以嘗試使用定界符按空格將每一行分開。
String line;
while ((line = bufferedReader.readLine()) != null) {
String values[] = line.split("\\s+");
}
這為您處理該行中每一位數據提供了一些起點。 正如Jason在評論中指出的那樣,根據實現的不同,它可以有很大的不同。
例如,在這種情況下,您可以將每個values[]
的最后一項解析為雙精度。 由你決定。
解析此類數據的兩種最受歡迎的方法是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\.)$
當然,執行它還需要其他代碼。 用谷歌搜索“正則表達式”。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.