You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用OpenCSV在Java中读取CSV文件第一列的后6位数字

解决方案

先修正原代码的语法问题

你的原代码存在多处语法错误,比如:

  • 构造方法内部不能定义main方法
  • FileReader的文件名参数未加引号,且缺少具体文件路径/名称
  • CSVReader实例化语句缺少右括号
  • 泛型声明错误,readAll()返回的是List<String[]>而非List<String>
  • 输出语句Sop是不规范简写,应该用System.out.println
  • 使用了中文引号“”,需替换为英文引号""

实现需求的完整代码

假设你使用的是OpenCSV的CSVReader(若未引入依赖,需先添加对应依赖),以下是实现打印第一列最后6位的代码:

import com.opencsv.CSVReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.List;

public class CSVProcessor {

    public static void main(String[] args) {
        // 替换为你的CSV文件实际路径
        String filePath = "your_csv_file.csv";
        
        try (CSVReader csvReader = new CSVReader(new FileReader(filePath))) {
            List<String[]> lines = csvReader.readAll();
            
            // 打印自定义表头
            System.out.println("Account number");
            
            // 遍历数据行(跳过表头行)
            for (int i = 1; i < lines.size(); i++) {
                String[] line = lines.get(i);
                String accountNumber = line[0];
                // 截取最后6位,增加长度判断避免索引越界
                String lastSixDigits = accountNumber.length() >= 6 
                    ? accountNumber.substring(accountNumber.length() - 6) 
                    : accountNumber;
                System.out.println(lastSixDigits);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

关键逻辑说明

  1. 表头处理:直接打印需求指定的Account number,替换原CSV的AccountNumber表头
  2. 数据截取:对每行第一列的账号字符串,用substring(accountNumber.length() - 6)获取最后6位;同时增加长度判断,避免账号长度不足6位时抛出异常
  3. 资源管理:使用try-with-resources自动关闭CSVReader和FileReader,避免资源泄漏

输出结果

运行代码后会得到你预期的输出:

Account number
567890
678901

内容的提问来源于stack exchange,提问作者gig

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 20:20:08