如何通过 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]);
    }