从文本文件中删除多余的空格

问题描述 投票:3回答:2

我有以下格式的文本文件数:

196903274115371008    @266093898 

Prince George takes his first public steps with his mom,                              Catherine, Duchess of    

Cambridge.

除了第一个新行字符外,我想删除所有空格+新行字符。所以我想在上面这样:

196903274115371008@266093898 

Prince George takes his first public steps with his mom, Catherine, Duchess of Cambridge.

我写了以下代码:

package remove_white_space222;

import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;


public class Remove_white_space222 {

    public static void main(String[] args) throws FileNotFoundException, IOException {

        FileReader fr = new FileReader("input.txt"); 
        BufferedReader br = new BufferedReader(fr); 
        FileWriter fw = new FileWriter("outfile.txt"); 
        String line;

        while((line = br.readLine()) != null)
        { 
            line = line.trim(); // remove leading and trailing whitespace
            line=line.replaceAll("\\s+", " ");
            fw.write(line);


        }
        fr.close();
        fw.close();
    }

}

在此先感谢您的帮助,,,,

java regex newline removing-whitespace
2个回答
0
投票

这是一种方法:

public static void main(String[] args) throws IOException {
       FileReader fr = new FileReader("input.txt"); 
        BufferedReader br = new BufferedReader(fr); 
        FileWriter fw = new FileWriter("outfile.txt"); 
        String line;

        int lineNum = 0;
        while((line = br.readLine()) != null)
        { 
            //check if we are working with the first two lines 
            //(which should remain untouched)
            if (lineNum > 1) {
                //make sure we ignore any empty lines
                if (line.trim().length() > 0) {
                    //add a space to the end of each line to make 
                    //padding before we append the next line.
                    line=line.trim().replaceAll("\\s+", " ") + " ";
                }
            } else {
                //remove all whitespace.
                line = line.trim().replaceAll("\\s", "");
                line = line + "\n";
            }
            fw.write(line);
            lineNum++;
        }
        fr.close();
        fw.close();
}

输出:

196903274115371008@266093898 

Prince George takes his first public steps with his mom, Catherine, Duchess of Cambridge. %  

0
投票

您可以通过枚举使用状态在第一行和后面的所有空行后添加换行符。

package remove_white_space222;

import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.PrintWriter
import java.io.IOException;


public class Remove_white_space222 {

    enum Status {

        FIRST, EMPTY, NORMAL;
    }

    public static void main(String[] args) throws FileNotFoundException, IOException {

        FileReader fr = new FileReader("input.txt"); 
        BufferedReader br = new BufferedReader(fr); 
        FileWriter fw = new FileWriter("outfile.txt"); 
        PrintWriter pw = new PrintWriter(fw);
        String line;

        while((line = br.readLine()) != null)
        { 
            line = line.trim(); // remove leading and trailing whitespace
            line=line.replaceAll("\\s+", " ");
            fw.write(line);
            if (status != Status.NORMAL) {
                if ((status == Status.FIRST) || line.isEmpty()) {
                    pw.println();
                    status = Status.EMPTY;
                } else {
                    status = Status.NORMAL;
                }
            }
        }
        fr.close();
        fw.close();
    }

}
© www.soinside.com 2019 - 2024. All rights reserved.