2013-09-16 2 views
0

Привет Я пытаюсь написать код, который будет читать файл с стихотворением. Затем он изменит первое «вы» в каждой строке с «мы». Я пытаюсь использовать replaceFirst(), replace(), replaceAll(); однако ни один из них не работал над заменой чего-либо.Java String.replaceFirst() issue

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"); 
    } 
} 

ответ

3

replace метод возвращает новая линия, она не может изменить объект, на котором вы называете его. Поэтому попробуйте:

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

Строки неизменяемы на Java. Это означает, что они никогда не меняются. Методы, которые вы вызываете, возвращают новые строки. Вам нужно их где-то спасти.

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

Вы должны проконсультироваться с Javadocs о струнных Java, прежде чем задавать вопрос о методах, которые действуют на них. Все объяснено here