如何通过 java 获取 txt 的列内容
how to fetches column contents of txt by java
String pathname = "F:\Calibration.txt";
try (FileReader reader = new FileReader(pathname);
BufferedReader br = new BufferedReader(reader)) {
String line;
while ((line = br.readLine()) != null) {
String[] split = line.split(",");
System.out.println(split[0]);
}
此代码可以获取第一列的内容
但列不固定。
我想 -- 按列数自动获取每一列的数据
不要像这样使用修复数字 split[fixNumber]
27311,28841,30577,31583,0
26401,28046,30234,31255,50
25495,27263,29891,30926,100
24594,26494,29548,30597,150
23696,25737,29206,30269,200
这是Calibration.txt
的内容
预期输出:
27311 26401 25495 24594 23696
colmun 不固定,我不想使用 split[0] 或 (split[1] split[2]...)
这是我的新密码:
List<String> list = new ArrayList();
String pathname = "F:\Calibration.txt";
try (FileReader reader = new FileReader(pathname);
BufferedReader br = new BufferedReader(reader))
{
String line;
while ((line = br.readLine()) != null) {
list.add(line);
}
for(int i = 0; i < list.size(); i++) {
System.out.println(i);
for(String a : list){
String[] regex = a.split(",");
System.err.println(regex[i]);
}
}
假设您已读取文件并将所有行存储在 ArrayList
中,正如您所做的那样。
List<String> list = new ArrayList();
String pathname = "F:\Calibration.txt";
try (FileReader reader = new FileReader(pathname);
BufferedReader br = new BufferedReader(reader))
{
String line;
while ((line = br.readLine()) != null) {
list.add(line);
}
}
如果你的第一行是
27311,28841,30577,31583,0
然后在这一行中,第 1 列(或索引 0)的值为 27311,
第 2 列 =28841,
第 3 列 =30577 等等..
如果你想要第n(或n-1个索引)行的第i(或i-1个索引)列,你需要执行以下操作:
String row = list.get(n-1); //row n
String[] columns = row.split(",");//this gives you the columns
//Now access any column
String col1 = columns[0];
String colI = columns[i-1];
现在,根据您的预期输出,您需要所有行的第一列。因此,您需要迭代列表,拆分它们并获取第一列。
//iterate the list
for(String line : list){
String[] columns = line.split(",");
String col0 = columns[0];
System.out.println("column 1 : "+col0);
}
如果您只需要每一行的第一列,另一种方法是使用正则表达式删除其他列和逗号。
//iterate the list
for(String line : list){
String col0 = line.replaceFirst("\s*,.*", "");
System.out.println("column 1 : "+col0);
}
要打印所有列,您还需要如下所示遍历列数组。
//iterate the list
for(String line : list){
String[] columns = line.split(",");
for(int i =0; i<columns.length; i++)
System.out.println("column "+ i +": "+columns[i]);
}
String pathname = "F:\Calibration.txt";
try (FileReader reader = new FileReader(pathname);
BufferedReader br = new BufferedReader(reader)) {
String line;
while ((line = br.readLine()) != null) {
String[] split = line.split(",");
System.out.println(split[0]);
}
此代码可以获取第一列的内容
但列不固定。
我想 -- 按列数自动获取每一列的数据
不要像这样使用修复数字 split[fixNumber]
27311,28841,30577,31583,0
26401,28046,30234,31255,50
25495,27263,29891,30926,100
24594,26494,29548,30597,150
23696,25737,29206,30269,200
这是Calibration.txt
的内容预期输出:
27311 26401 25495 24594 23696
colmun 不固定,我不想使用 split[0] 或 (split[1] split[2]...)
这是我的新密码:
List<String> list = new ArrayList();
String pathname = "F:\Calibration.txt";
try (FileReader reader = new FileReader(pathname);
BufferedReader br = new BufferedReader(reader))
{
String line;
while ((line = br.readLine()) != null) {
list.add(line);
}
for(int i = 0; i < list.size(); i++) {
System.out.println(i);
for(String a : list){
String[] regex = a.split(",");
System.err.println(regex[i]);
}
}
假设您已读取文件并将所有行存储在 ArrayList
中,正如您所做的那样。
List<String> list = new ArrayList();
String pathname = "F:\Calibration.txt";
try (FileReader reader = new FileReader(pathname);
BufferedReader br = new BufferedReader(reader))
{
String line;
while ((line = br.readLine()) != null) {
list.add(line);
}
}
如果你的第一行是
27311,28841,30577,31583,0
然后在这一行中,第 1 列(或索引 0)的值为 27311,
第 2 列 =28841,
第 3 列 =30577 等等..
如果你想要第n(或n-1个索引)行的第i(或i-1个索引)列,你需要执行以下操作:
String row = list.get(n-1); //row n
String[] columns = row.split(",");//this gives you the columns
//Now access any column
String col1 = columns[0];
String colI = columns[i-1];
现在,根据您的预期输出,您需要所有行的第一列。因此,您需要迭代列表,拆分它们并获取第一列。
//iterate the list
for(String line : list){
String[] columns = line.split(",");
String col0 = columns[0];
System.out.println("column 1 : "+col0);
}
如果您只需要每一行的第一列,另一种方法是使用正则表达式删除其他列和逗号。
//iterate the list
for(String line : list){
String col0 = line.replaceFirst("\s*,.*", "");
System.out.println("column 1 : "+col0);
}
要打印所有列,您还需要如下所示遍历列数组。
//iterate the list
for(String line : list){
String[] columns = line.split(",");
for(int i =0; i<columns.length; i++)
System.out.println("column "+ i +": "+columns[i]);
}