簡體   English   中英

使用Java解析行的最佳方法是什么?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM