2013-11-10 71 views
0

所以我最近收到了一個很大的文本文件,我不得不閱讀它的格式非常糟糕,因爲隨處都有下一行字符,使得它非常難以閱讀。所以我一直在想辦法對文件進行排序並使用java程序刪除每個nextLine從java中的文本文件中刪除某個字符

例如,如果我們有這樣的文字:

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse rhoncus interdum  condimentum. Proin viverra 
justo vel imperdiet sagittis, purus sapien sagittis mi, et blandit purus ante non libero. Nulla ac 
augue ut odio eleifend interdum 
ac id justo. Quisque rutrum euismod sem, vel euismod nunc convallis eu. Praesent odio velit, 
condimentum id scelerisque 
iaculis, vulputate vitae lacus. Fusce adipiscing blandit libero eu venenatis. 
Vestibulum nec urna 
pulvinar arcu pretium 
pretium. Duis vitae augue dolor. Etiam consectetur feugiat 
diam sit amet gravida. 

我們希望它會是這樣:

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse rhoncus interdum 
condimentum. Proin viverra, justo vel imperdiet sagittis, purus sapien sagittis mi,  
blandit purus ante non libero. Nulla ac augue ut odio eleifend interdum ac id justo. 
Quisque rutrum euismod sem, vel euismod nunc convallis eu. Praesent odio velit, 
condimentum id scelerisque iaculis, vulputate vitae lacus. Fusce adipiscing blandit 
libero eu venenatis. Vestibulum nec urna pulvinar arcu pretium pretium. Duis vitae 
augue dolor 

我不是很有經驗的讀/寫使用Java文本文件。我目前的想法是讀取每個char值,檢查它是否等於下一行的值,如果不是,則繼續將該char寫入單獨的文本文件。但我不確定如何實現這一點。我不確定如何檢查下一個字符是否是下一行。

任何幫助將是偉大的。

+0

爲什麼不分配每行到一個字符串,然後將您的標準應用到該字符串? – Waclock

+0

什麼是您需要完成的EXCACT任務? –

+0

我看到你接受了我的答案,但我不認爲我的答案完全符合你的要求。你有沒有編輯你的文章,因爲你需要更多的幫助? –

回答

1
File file = new File("yourFilePath.txt"); // create File object to read from 
Scanner scanner = new Scanner(file);  // create scanner to read 
Printwriter writer = new PrintWriter("someOutputFile.txt"); // create file to write to 

while(scanner.hasNextLine()){ // while there is a next line 
    String line = scanner.nextLine(); // line = that next line 

    // do something with that line 
    String newLine = ""; 

    // replace a character 
    for (int i = 0; i < line.length(); i++){ 
     if (line.charAt(i) != '*') { // or anything other character you chose 
      newLine += line.charAt(i); 
     } 
    } 

    // print to another file. 
    writer.println(newLine); 
} 

你也可以只寫回同一個文件,但這需要使用StringBuilder

1

您可以使用掃描儀來執行此操作。

Scanner in = new Scanner(new File(filename)); 
String new_file_string = ""; 
while (in.hasNextLine()) 
    new_file_string += in.nextLine(); 
// write new_file_string to file. 
+0

我不知道Scanner有這種方法。 –

0

我建議你使用一個BufferedReader,並利用readLine()方法來讀取文件在一個時間線。

  • 當您讀取空行時,該方法將返回一個(非空)空字符串。

  • 當你到達文件末尾時,該方法將返回一個空值。

  • 否則,該方法將返回行...移除行結束符。 (所以當你輸出線路時,不要忘記添加線路終端!)

這應該足以讓你自己編寫程序。 (這將是一件好事!)

+0

但不會只爲完全空行工作? –

+0

好的。如果你想刪除不是「完全空白」的行,你需要爲它們進行測試。但是由於你沒有說清除標準是什麼,所以我不能告訴你如何做這個測試。 –

+0

另一方面,如果您真的只想刪除換行符,請修改第3個項目符號以不添加行終止符!但是,我沒有考慮刪除換行符以提高可讀性。 –