从java中的文本文件中删除某个字符

时间:2013-11-10 01:47:12

标签: java text io java.util.scanner

所以我最近收到了一个我需要阅读的大文本文件,遗憾的是它的格式非常糟糕,因为到处都有下一行字符使得它非常难以阅读。所以我一直试图想办法对文件进行排序,并使用java程序删除每个nextLine

例如,如果我们有这个文字:

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写入单独的文本文件(如果不是)。但我不确定如何实现这一点。我不确定如何检查下一个字符是否是下一行。

任何帮助都会很棒。

3 个答案:

答案 0 :(得分: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.

答案 1 :(得分: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

答案 2 :(得分:0)

我建议您使用BufferedReader,并使用readLine()方法一次读取一行文件。

  • 当您读取空行时,该方法将返回一个(非空)空字符串。

  • 当您到达文件末尾时,该方法将返回null。

  • 否则,该方法将返回行...并删除行终止符。 (因此,当您输出该行时,请不要忘记添加行终止符!)

这应该足以让您自己编写程序。 (这将是一件好事!)