然后将每行分成三部分,然后将这些部分分成单独的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
的数组中,依此类推。
答案 0 :(得分:3)
您可以在循环中使用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]);
出处:
欧元(EUR)1.359€
答案 1 :(得分:0)
您只需要用\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]);