有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何通过给出索引值来替换文本文件中的特定字符?

遇到此代码,它替换给定值的所有字符

File temp = File.createTempFile("newfile", ".txt");
    FileWriter fw = new FileWriter(temp);
    Reader reader = new FileReader(file);
    BufferedReader br = new BufferedReader(reader);

    while (br.ready()) {
        fw.write(br.readLine().replaceAll("n", "j") + "\n");
    }

    fw.close();
    br.close();
    reader.close();

    temp.renameTo(file);
}

不是用“j”替换所有的“n”,而是有没有办法指定我只想更改的索引


共 (2) 个答案

  1. # 1 楼答案

    您可以使用^{}(接受正则表达式),使用以下模式:

    (?<=.{N-1}).
    

    其中“N”是要替换的索引

    当然有很多选择,看看^{}来激发你的创造力

  2. # 2 楼答案

    while语句中的行如下所示:

    fw.write(br.readLine().replaceAll("n", "j") + "\n");
    

    这可以扩展到:

    String str = br.readLine();                   //get text
    String replace = str.replaceAll("n", "j");    //replace content
    replace = replace + "\n";                     //add new line
    fw.write(replace);                            //write to file
    

    对于替换某个索引的实例,您可能希望执行类似的操作:

    StringBuilder str = new StringBuilder(br.readLine()); //Read line into StringBuilder
    if(str.length() > 3)                //Check if string is long enough
        str.setChar(4, 'x');            //Replace character in line at index 4 to 'x'
    fw.write(str);                      //write to file