2014-06-17 76 views
2

我有以下格式的文本文件号:从文本中删除多余的空格文件

196903274115371008 @266093898 

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

Cambridge. 

我想删除所有多余的空间,同时新+行字符以外的第一个新行字符。所以我想上面是这样的:

[email protected] 

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(); 
    } 

} 

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

+2

+1为干净的代码和你想要的解释..很少见过SOF。 – TheLostMind

回答

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(); 
} 

输出:

[email protected] 

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(); 
    } 

}