0

我有一个包含电子邮件标题及其值的文本文件。如下所示:

X-Originating-IP: [141.12.67.171]
X-EIP: [WrrdRE5IHzynFRch2UnizIKJ909XPTq5]
X-Originating-Email: [reva.reva.reva@hotmail.com]
Message-ID: <SNT139-W588104AB227AA9D1E443ABCF540@phx.gbl>
Content-Type: multipart/mixed;
boundary="_ee82adcf-0995-439f-a6dc-4386dadf9660_"
From: Reva Patil <reva.reva.reva@hotmail.com>  
To: <mueller.reva@yahoo.de>
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]

我注意到在从“From:”开始的行中(使用 winmerge 文件比较工具),换行符之前有空格。我想删除它。实际上,我想删除文件中每个换行符之前的所有空格。我已经在这里完成了发布的问题:在java中的新行之前删除空格 但不幸的是这对我没有帮助。

我将不胜感激在 java 中执行此操作的任何建议。

4

3 回答 3

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()每一行。

再写那些行

使用:文件#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);
    }
于 2012-12-04T12:48:38.903 回答
0

假设您将文件作为字符串,请执行此操作

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

解释:

  • (?m)打开“换行符前后的插入符号和美元匹配”开关
  • \s+表示“一个或多个空白字符
  • (?=$)表示下一个字符(未使用)是行尾字符
于 2012-12-04T12:52:22.587 回答
0

谢谢大家的回复。

最后我可以找到从字符串中删除所有空格(包括非中断空格)的正则表达式。

str= str.replaceAll("[\\s\\u00A0]+","");
于 2013-01-09T09:56:49.640 回答