Java String.replaceFirst()问题

时间:2013-09-16 04:04:57

标签: java replace printwriter

您好我正在尝试编写能够读取带有诗歌的文件的代码。然后它会用“我们”改变每行中的第一个“你”。我一直在尝试使用replaceFirst(),replace(),replaceAll();然而,没有一个人能够更换任何东西。

 import java.io.*;
import java.util.Scanner;//imports

public class TextEditorTester 
{
    private static boolean line_change;

   public static void main(String[] args) throws FileNotFoundException
   {
       String line = "";
       File inFile = new File("OldPoem.txt");
       Scanner in = new Scanner(inFile);
       PrintWriter out = new PrintWriter("NewPoem.txt");
       while(in.hasNextLine()){
           line = in.nextLine();
           line.replace("you", "we");
           out.println(line);
       }
       out.close();
       File newFile = new File("NewPoem.txt");
       Scanner newOne = new Scanner(newFile);
       System.out.println(newOne.nextLine());
       System.out.println("Expected: Have we ever tried to enter the long black branches of other lives");
   }
}

2 个答案:

答案 0 :(得分:3)

replace方法返回新行,它无法修改您调用它的对象。所以试试:

line = line.replace("you", "we");

答案 1 :(得分:2)

字符串在Java中是不可变的。这意味着他们永远不会改变您调用的方法返回新的字符串。你需要将它们保存在某个地方。

line = line.replace("you", "we");

在询问有关对它们起作用的方法的问题之前,您应该先咨询Javadocs有关Java中的字符串。一切都解释为here