2016-12-23 20 views
-3

У меня есть текст:Форматирование строки, чтобы получить только слова в колонке

c:\MyMP3s\4 Non Blondes\Bigger!\Faster, More!_Train.mp3 

Я хочу, чтобы удалить форме этот текст эти символы: :,\!._ и форматировать текст, то, как это:

c 
MyMP3s 
4 
Non 
Blindes 
Bigger 
Faster 
More 
Train 
mp3 

И напишите все это в файле. Вот что я сделал:

public static void formatText() throws IOException{ 

    Writer writer = null; 
    BufferedReader br = new BufferedReader(new FileReader(new File("File.txt"))); 

    String line = ""; 
    while(br.readLine()!=null){ 
     System.out.println("Into the loop"); 

     line = br.readLine(); 
     line = line.replaceAll(":", " "); 
     line = line.replaceAll(".", " "); 
     line = line.replaceAll("_", " "); 

     line = System.lineSeparator(); 
     System.out.println(line); 
     writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("Write.txt"))); 
     writer.write(line); 
    } 

И это не работает!

Исключение:

Into the loop 
Exception in thread "main" java.lang.NullPointerException 
    at Application.formatText(Application.java:25) 
    at Application.main(Application.java:41) 
+1

вы имели в виду 'линия + = System.lineSeparator();'? –

+0

Можете ли вы указать, какой был выход программы? – SteelToe

+0

@ PM77-1 Я напишу вывод –

ответ

1

В конце кода, у вас есть:

line = System.lineSeperator()

Это сбрасывает ваши замены. Еще одно замечание: String#replaceAll принимает в регулярном выражении первый параметр. Таким образом, вы должны избежать каких-либо последовательностей, таких как .

String line = "c:\\MyMP3s\\4 Non Blondes\\Bigger!\\Faster, More!_Train.mp3"; 
System.out.println("Into the loop"); 

line = line.replaceAll(":\\\\", " "); 
line = line.replaceAll("\\.", " "); 
line = line.replaceAll("_", " "); 
line = line.replaceAll("\\\\", " "); 

line = line.replaceAll(" ", System.lineSeparator()); 

System.out.println(line); 

Выход:

Into the loop 
c 
MyMP3s 
4 
Non 
Blondes 
Bigger! 
Faster, 
More! 
Train 
mp3