2012-12-04 90 views
0

我有一個包含電子郵件標題及其值的文本文件。看起來象下面這樣:從文本文件中刪除換行符前的一個或多個空格

X-Originating-IP: [141.12.67.171] 
X-EIP: [WrrdRE5IHzynFRch2UnizIKJ909XPTq5] 
X-Originating-Email: [[email protected]] 
Message-ID: <[email protected]> 
Content-Type: multipart/mixed; 
boundary="_ee82adcf-0995-439f-a6dc-4386dadf9660_" 
From: Reva Patil <[email protected]>   
To: <[email protected]> 
Subject: Hotmail 
Date: Wed, 21 Nov 2012 12:34:46 +0000 
Importance: Normal 
MIME-Version: 1.0 
X-OriginalArrivalTime: 21 Nov 2012 12:34:47.0075 (UTC) FILETIME=[976F7F30:01CDC7E4] 

我已經注意到,從開頭的行「從:」(與文件的WinMerge比較工具),還有一個換行符之前的空格。我想刪除它。其實我想刪除文件中每個換行符之前的所有空格。我已經通過發佈的問題在這裏:removing space before new line in java 但是,這並沒有幫助我不幸。

我會很感激任何意見,在java中這樣做。

回答

0

謝謝大家的回覆。

最後,我可以找到正則表達式,它從字符串中刪除所有空白(包括非破壞空白)。

str= str.replaceAll("[\\s\\u00A0]+",""); 
0

使用Guava

讀文件:

File file = new File(getClass().getResource("/test.txt").getFile()); 
List<String> lines = null; 
try { 
    lines = Files.readLines(file, Charsets.UTF_8); 
} catch (IOException e) { 
    e.printStackTrace(); 
} 

trim()每一行。

再次

寫那些線使用:Files#write

編輯:

File file = new File(getClass().getResource("/test.txt").getFile()); 
    List<String> lines = null; 
    try { 
     lines = Files.readLines(file, Charsets.UTF_8); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 

    List<String> trimmedLines = new ArrayList<String>(lines.size()); 

    File to; /// outputfile 
    Charset charSet = Charset.defaultCharset(); 
    for (String line : lines) { 
     Files.write(line.trim(), to, charSet); 
    } 
+0

我試過修剪,但似乎沒有工作..我試着你說什麼。 – user523956

+0

@ user523956看我的編輯。也許你做了這樣的事情:'line.trim(); Files.write(line,file,charSet);' – dantuch

+0

謝謝你會試試.. – user523956

0

假設你有一個文件爲字符串,這樣做

String trimmed = contents.replaceAll("(?m)\\s+(?=$)", ""); 

說明:

  • (?m)接通「之後和換行之前插入符號和美元匹配」切換
  • \s+裝置「的一個或多個空白字符
  • (?=$)意味着下一個字符(未消耗的)是結束行的字符
+0

我試圖通過提取文件的每一行一個字符串。這沒有用。 – user523956

+0

@ user523956我已編輯,以迎合Windows文件 - 現在嘗試 – Bohemian

+0

這也沒有工作...... – user523956

相關問題