移除所有空格和空行。

8
如何使用Java SE从txt文件中删除所有空格和空行?
输入:
qwe
    qweqwe
  qwe



qwe

输出:

qwe
qweqwe
qwe
qwe

谢谢!


3
请展示你迄今为止的代码。 - JoseK
1
你目前有什么代码? - Richard H
我本来想回复,但我也需要先看看这是否是作业。 - Shlublu
不是作业。我想不出最有效的方法来读取一个非常非常大的文本文件并删除所有空格和空行。 - Shumon Saha
8个回答

14
这样怎么样:
FileReader fr = new FileReader("infile.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
    if (!line.equals("")) // don't write out blank lines
    {
        fw.write(line, 0, line.length());
    }
} 
fr.close();
fw.close();

注意-未经测试,语法可能不完美,但可以给您提供一个思路/方法。
请参阅以下JavaDocs以供参考: http://download.oracle.com/javase/7/docs/api/java/io/FileReader.html http://download.oracle.com/javase/7/docs/api/java/io/FileWriter.html

这将删除文件中的所有换行符。 - Peter Lawrey

4

1
唯一有效的解决方案已经嵌入到String对象中。绝对不需要做任何其他事情。这应该被设置为答案。 - Omri
2
返回一个去除前导和尾随空格的字符串副本。它不会删除文本文件中的空格,只会删除前导和尾随空格。这不是 OP 所要求的。OP 想要删除所有空格和制表符。 - Kevin Van Ryckegem

3
...
Scanner scanner = new Scanner(new File("infile.txt"));
PrintStream out = new PrintStream(new File("outfile.txt"));
while(scanner.hasNextLine()){
    String line = scanner.nextLine();
    line = line.trim();
    if(line.length() > 0)
        out.println(line);
}
...

1

这是我第一次在这个网站上回答问题,请理解。经过很多搜索,我找到了适合我的方法。

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

while((line = br.readLine()) != null)
{ 
     line = line.trim(); // remove leading and trailing whitespace
            line=line.replaceAll("\\s+", " ").trim().concat("\n");
            if (!line.equals("")) // don't write out blank lines
    {
        fw.write(line, 0, line.length());
    }
            
         
} 
fr.close();
fw.close();

请在回答问题时纠正拼写错误。 - nilakantha singh deo

0

我认为你只是想要一个正则表达式:

        txt= txt.replaceAll("\\n\\s*\\n", "\n");  //remove empty lines
        txt= txt.replaceAll("\\s*", "");  //remove whitespaces

关于读写文件,有很多其他资源可以找到如何做到这一点。

0

去除每行的空格,不考虑空行和空值行:

String line =  buffer.readLine();

while (line != null) {
    line = removeSpaces(line);        
    //ignore empty lines
    if (line.isEmpty()) return;

      ....code....


    line =  buffer.readLine();
} 




public String removeSpaces (String arg)
{
    Pattern whitespace = Pattern.compile("\\s");
    Matcher matcher = whitespace.matcher(arg);
    String result = "";
    if (matcher.find()) {
        result = matcher.replaceAll("");
    }
    return result;
}

0
package com.home.interview;

import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;

public class RemoveInReadFile {

    public static void main(String[] args) {

        try {
            Scanner scanner = new Scanner(new File("Readme.txt"));


            while(scanner.hasNext())
            {
                String line = scanner.next();

                String lineAfterTrim = line.trim();
                System.out.print(lineAfterTrim);
            }


        } 

        catch (FileNotFoundException e) {

            e.printStackTrace();
        }

    }

}

在这个程序中,我已经删除了所有的空格,并从读入的文件中将所有内容读取到一行中。 - Nagarjun BN

0
用于删除同一文件中的空行。
public static void RemoveEmptyLines(String FilePath) throws IOException
{
    File inputFile = new File(FilePath);
    BufferedReader reader = new BufferedReader(new FileReader(inputFile));
    String inputFileReader;
    ArrayList <String> DataArray = new ArrayList<String>();
    while((inputFileReader=reader.readLine())!=null)
    {
        if(inputFileReader.length()==0)
        {
            continue;
        }
        DataArray.add(inputFileReader);
    }
    reader.close();

    BufferedWriter bw = new BufferedWriter(new FileWriter(FilePath));
    for(int i=0;i<DataArray.size();i++)
    {
        bw.write(DataArray.get(i));
        bw.newLine();
        bw.flush();
    }
    bw.close();
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接