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

在java中从文本文件中删除某个字符,java,text,io,java.util.scanner,Java,Text,Io,Java.util.scanner,因此,我最近收到了一个大的文本文件,我需要阅读,不幸的是,它的格式非常糟糕,因为到处都是下一行字符,使得阅读非常困难。所以我一直在想一种方法,用java程序对文件进行排序并删除每个nextLine 例如,如果我们有以下文本: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse rhoncus interdum condimentum. Proin viverra justo vel imperd

因此,我最近收到了一个大的文本文件,我需要阅读,不幸的是,它的格式非常糟糕,因为到处都是下一行字符,使得阅读非常困难。所以我一直在想一种方法,用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读/写文本文件不是很有经验。我目前的想法是读取每个字符值,检查它是否等于下一行的值,如果不等于,则继续将该字符写入单独的文本文件。但我真的不确定如何实现这一点。我不知道如何检查下一个字符是否是下一行


任何帮助都会很好。

您可以使用扫描仪来完成此操作

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.

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

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

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

  • 否则,该方法将返回行。。。移除线路终止符后。(因此,在输出行时,不要忘记添加行终止符!)

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

File File=new File(“yourFilePath.txt”);//创建要从中读取的文件对象
扫描仪扫描仪=新扫描仪(文件);//创建要读取的扫描仪
Printwriter writer=新的Printwriter(“someOutputFile.txt”);//创建要写入的文件
while(scanner.hasNextLine()){//当有下一行时
String line=scanner.nextLine();//line=下一行
//用那条线做点什么
字符串换行=”;
//替换字符
对于(int i=0;i

您也可以只写回同一个文件,但这需要使用
StringBuilder

为什么不将每一行指定给一个字符串,然后将您的条件应用于该字符串?您需要完成的额外任务是什么?我知道您已经接受了我的答案,但我认为我的答案并不完全符合您的要求。你编辑你的文章是因为你需要更多的帮助吗?最简单的方法是用HTML扩展制作一个副本,然后在浏览器中打开它;html不会以换行符开始新行。我想,在那之后,你可能想进去,输入一些angle-P-angle标记,在你想的地方打断它,但这样可以完全节省编写程序的时间。但这不是只适用于完全空行吗?是的。如果要删除不是“完全空”的行,则需要对其进行测试。但是,由于您没有说明删除的标准是什么,因此我无法告诉您如何进行该测试。另一方面,如果您确实希望只删除换行符,请修改第三个项目符号,使其不重新添加行终止符!但是,我没有考虑过删除换行符是提高可读性的好方法。我不知道Scanner有这种方法。对于涉及大量字符串附加操作的操作,最好使用stringbuffer或stringbuilder(不可变数据类型),而不是使用字符串(可变)连接引用,因为每次都会创建新的字符串对象,这是不必要的。@Patrick是的,您是正确的!免责声明:我在编程的早期就发布了这个。哈哈!这只是一个回顾您编写的代码并与您过去的编码级别进行比较的机会:D
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);
}