2013-10-08 4 views
0

Я пытаюсь изменить часть строки в txt-файле. Это работает, но если строка в файле содержит специальные символы, такие как (он не работает Что плохогоПереписывание строки в файле со специальными символами

import java.io.BufferedReader; 
import java.io.FileInputStream; 
import java.io.FileWriter; 
import java.io.IOException; 
import java.io.InputStreamReader; 


public class nomarks 
{ 
    public static void main(String[] args) 
    { 
     FileInputStream fstream; 
     try 
     { 
      fstream = new FileInputStream("readme.txt"); 
      BufferedReader br = new BufferedReader(new InputStreamReader(fstream)); 
      String oldText = "i have !? in my text"; 
      String textToChange = "cant solve the problem"; 
      String line; 
      String holeFile = ""; 
      while ((line = br.readLine()) !=null) 
      { 
       holeFile += line + "\r\n"; 
      } 
      br.close(); 
      FileWriter writer = new FileWriter("readme.txt"); 
      String newtext = holeFile.replaceAll(oldText, textToChange); 
      writer.write(newtext); 
      writer.close(); 
     } catch (IOException e) 
     { 
      e.printStackTrace(); 
     } 
    } 

} 
+0

текста, который вы хотите заменить – Simmant

+0

: пи видеть это сейчас ОКК позвольте мне попробовать:) – Simmant

ответ

0

Использование replace в вашем случае:?!?

String newtext = holeFile.replace(oldText, textToChange); 

replaceAll использует regexp (и у вас есть знак вопроса в строке), поэтому вы можете иметь проблемы.

Смотрите документацию here,

+0

спасибо человеку !!! за работой! – Erez

+0

@Erez Пожалуйста, примите ответ, если это вам поможет. – Alex

0

Задача с .replaceAll(String regex, String replacement) заключается в том, что в качестве первого параметра требуется регулярное выражение. Итак, предположим, что вы хотите точно соответствовать i have !? in my text. вам нужно будет изменить его на регулярное выражение, дружественное (если хотите) текст.

Так, короче говоря, вам нужно будет заменить это: i have !? in my text с этим: i have !\\? in my text

+0

спасибо, как сказал alex - проблема replaceAll была проблемой. – Erez

1

Вы можете использовать holeFile.replaceAll(Pattern.quote(oldText), textToChange)

Смежные вопросы