[英]Cleanest way of parsing in a text file
然后將每一行分成三部分,然后將這些部分放入單獨的String[] arrays
?
所以目前我正在通過BufferedReader
/ FileReader
導入文件,將每一行添加到ArrayList<String>
。 看起來像:
String line;
ArrayList<String> thing = new ArrayList<String>();
BufferedReader reader = new BufferedReader(new FileReader(
"file.txt"));
while (true) {
line = reader.readLine();
if (line == null) {
break;
}
thing.add(line);
}
reader.close();
然后,將每個內容的內容解析為基本for循環中的String[] array
。
String[] array = new String[thing.size()];
for(i=0;i<thing.size();i++) {
array[i] = thing.get(i)
}
到目前為止,我已經知道了。
導入的數據格式如下:
歐元(EUR),1.359,€
美元(USD),1.34,$
據我所知, split
與正則表達式類似於沿着\\\\s*,\\\\s*
可能會被用來將字符串分割成不同的組件,但據我有零的想法。
問題:我將如何進一步將琴弦拆分。
例如,將字符串的每個第一部分放入稱為currency
的數組中,將字符串的每個第二部分放入稱為factor
的數組中,依此類推。
您可以在for循環內使用split(",")
將每個String拆分為另外三個部分,然后將它們添加到適當的數組中:
List<String> thing = new ArrayList<>();
thing.add("Euro (EUR), 1.359, €");
String[] currency = new String[thing.size()];
String[] factor = new String[thing.size()];
String[] sign = new String[thing.size()];
for(int i=0;i<thing.size();i++) {
String parts[] = thing.get(i).split(",");
currency[i] = parts[0];
factor[i] = parts[1];
sign[i] = parts[2];
}
System.out.println(currency[0] + " " + factor[0] + " " + sign[0]);
OUTPT:
歐元(EUR)1.359€
您只需要用\\s*,\\s*
分割行(而不是+
因為它至少需要一個空格),然后將3個部分存儲在3個列表中。 與讀取文件以存儲每一行然后在List
上進行迭代以拆分並添加到arrays
相比,此選項更容易比較( Other option code
)。
您可以在讀取文件的循環中完成所有操作:
String line;
String[] lineSplit;
ArrayList<String> currencyList = new ArrayList<>();
ArrayList<String> factorList = new ArrayList<>();
ArrayList<String> symbolList = new ArrayList<>();
try (BufferedReader reader = new BufferedReader(new FileReader("file.txt"))) {
while ((line = reader.readLine()) != null) {
lineSplit = line.split("\\s*,\\s*");
if (lineSplit.length == 3) {
currencyList.add(lineSplit[0]);
factorList.add(lineSplit[1]);
symbolList.add(lineSplit[2]);
}
}
} catch (IOException e) {
e.printStackTrace();
}
如果您最后需要數組:
String[] currency = currencyList.toArray(new String[0]);
String[] factor = factorList.toArray(new String[0]);
String[] symbol = symbolList.toArray(new String[0]);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.