从文本文件中删除换行符之前的一个或多个空格

时间:2012-12-04 12:38:40

标签: java regex newline

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

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文件比较工具)开始的行中,在换行符之前有空格。我想删除它。实际上我想删除文件中每个换行符之前的所有空格。我已经在这里查看了已发布的问题:removing space before new line in java 但不幸的是,这并没有帮助我。

我很感激在java中做任何建议。

3 个答案:

答案 0 :(得分: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);
    }

答案 1 :(得分:0)

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

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

说明:

  • (?m)启用“换行符之前和之后的插入符号和美元匹配”切换
  • \s+表示“一个或多个空白字符
  • (?=$)表示下一个字符(未消费)是行尾字符

答案 2 :(得分:0)

谢谢大家的回复。

最后,我发现正则表达式可以从字符串中删除所有空格(包括非破坏空格)。

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