2014-06-17 73 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(); 
    } 

}