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

如何在文本文件的指定行中替换指定单词?

实现指定行内的单词替换(Java)

你的现有代码是直接替换整个文件中匹配的整行内容,要实现指定行内替换目标单词,核心思路是逐行处理文件内容,仅对目标行执行单词替换,其他行保持不变。

修改后的代码示例

try {    
    File f = new File("bookingDetails.txt");
    Scanner input = new Scanner(f);
    StringBuilder bd = new StringBuilder();
    // 获取用户输入:目标行号(建议从1开始计数)、旧单词、新单词
    int targetLine = Integer.parseInt(jTextField4.getText()); // 新增行号输入框
    String oldWord = jTextField3.getText();
    String newWord = jTextField1.getText();
    
    int currentLine = 1;
    while(input.hasNextLine()) {
        String line = input.nextLine();
        // 判断是否是目标行,是则替换该行内的单词
        if(currentLine == targetLine) {
            // 替换该行内所有匹配的旧单词,若只需替换第一个用replaceFirst
            line = line.replace(oldWord, newWord);
        }
        bd.append(line + "\n");
        currentLine++;
    }
    input.close();
    
    FileWriter fw = new FileWriter(f);
    fw.append(bd.toString());
    fw.flush();
    fw.close(); // 记得关闭流
} catch(NumberFormatException ex) {
    // 处理行号输入不是数字的情况
    System.out.println("请输入有效的行号");
} catch(Exception ex) {
    ex.printStackTrace();
}

关键说明

  1. 行号处理:新增行号输入框让用户指定要修改的行(示例中用jTextField4),行号从1开始计数更符合用户习惯,循环中用currentLine跟踪当前读取的行号。
  2. 逐行替换:仅在读取到目标行时,对该行执行单词替换,其他行直接原样写入。
  3. 替换范围:使用line.replace(oldWord, newWord)会替换该行内所有匹配的旧单词,如果只需要替换该行第一个匹配项,改用line.replaceFirst(oldWord, newWord)即可。
  4. 流的关闭:补充了fw.close()确保文件流正确关闭,避免资源泄漏。

示例验证

原文本:

Kent:23:Male:Chief
Jacob:25:Male:Plumber

输入:目标行号1,旧单词Male,新单词Female,执行后输出:

Kent:23:Female:Chief
Jacob:25:Male:Plumber

完美实现指定行内的单词替换,不会影响其他行的内容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 19:45:18