2013-11-10 72 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个项目符号以不添加行终止符!但是,我没有考虑删除换行符以提高可读性。 –