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

如何在Java中从.txt文件提取指定学生ID对应的姓名到String变量?

解决方案

不用逐字符读取的话,推荐用BufferedReader逐行读取结合正则匹配的方式,既能高效处理文件,又能规避课程字段里包含逗号导致的分割错误问题。

实现步骤

  1. 用BufferedReader逐行读取文件内容,避免一次性加载整个文件(适合大文件场景)。
  2. 针对每行内容,用正则表达式匹配出studentID、studentName等字段——因为课程字段里可能包含逗号,直接用split(",")会出错。
  3. 判断当前行的studentID是否为379,若是则提取对应的studentName赋值给变量name。

代码示例

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class StudentInfoReader {
    public static void main(String[] args) {
        String name = null;
        // 正则表达式:匹配每行的各个字段,兼容课程里的逗号
        String regex = "(\\d+),([^,]+),([^,]+),([^,]+),(\\d+),([\\d.]+)(\\((.*?)\\)|,(null))";
        Pattern pattern = Pattern.compile(regex);

        try (BufferedReader br = new BufferedReader(new FileReader("studentInfo.txt"))) {
            String line;
            while ((line = br.readLine()) != null) {
                Matcher matcher = pattern.matcher(line);
                if (matcher.matches()) {
                    String studentId = matcher.group(1);
                    if ("379".equals(studentId)) {
                        name = matcher.group(2);
                        break; // 找到目标后直接退出循环,提升效率
                    }
                }
            }
        } catch (IOException e) {
            e.printStackTrace();
        }

        // 验证结果
        System.out.println("目标学生姓名:" + name);
    }
}

代码说明

  • 正则表达式(\\d+),([^,]+),([^,]+),([^,]+),(\\d+),([\\d.]+)(\\((.*?)\\)|,(null))的作用:
    • (\\d+):匹配studentID(纯数字)
    • ([^,]+):匹配studentName、department、password(不含逗号的内容)
    • (\\d+):匹配batch(纯数字)
    • ([\\d.]+):匹配cgpa(数字或带小数点的数值)
    • (\\((.*?)\\)|,(null)):匹配课程部分,兼容(xxx, xxx)和,(null)两种格式
  • 使用try-with-resources自动关闭BufferedReader,避免资源泄漏。
  • 找到目标ID后立即break循环,无需继续读取后续行,提升处理效率。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 12:30:00