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

Java 从文本文件中删除换行前的一个或多个空格,java,regex,newline,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; bo

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

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]
X-origing-IP:[141.12.67.171]
X-EIP:[WrrdRE5IHzynFRch2UnizIKJ909XPTq5]
X-origing-Email:[reva.reva。reva@hotmail.com]
消息ID:
内容类型:多部分/混合;
边界=“ee82adcf-0995-439f-a6dc-4386dadf9660”
发件人:Reva Patil
致:
主题:Hotmail
日期:2012年11月21日星期三12:34:46+0000
重要性:正常
MIME版本:1.0
X-OriginalArrivalTime:2012年11月21日12:34:47.0075(UTC)文件时间=[976F7F30:01CDC7E4]
我注意到从“from:”(使用winmerge文件比较工具)开始的一行中,换行符前有空格。我想删除它。实际上,我想删除文件中每个换行符之前的所有空格。我已经在这里查看了发布的问题: 但不幸的是,这对我没有帮助

如果您能给我一些建议,我将不胜感激。

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

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

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

  • (?m)
    打开“换行前后插入符号和美元匹配”开关
  • \s+
    表示“一个或多个空白字符”
  • (?=$)
    表示下一个字符(未使用)是行尾字符

    • 谢谢大家的回复

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

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

      我试过修剪,但似乎不起作用。我完全按照你说的做了。@user523956查看我的编辑。也许你做了类似的事情:
      line.trim();Files.write(line,file,charSet);
      我真的很抱歉尝试得太晚。但我的eclipse似乎找不到字符集,所以在下面的行中出现了错误(line=Files.readLines)(文件,Charsets.UTF_8);)你知道如何解决这个问题吗?@user523956
      Charset-utf8charset=Charset.forName(“UTF-8”);
      试试这个。
      cahrsets
      类是
      Guava
      的一部分,也许你忽略了我使用这个库的建议……所以试试
      Charset.forName(“UTF-8”)
      我尝试将文件的每一行提取为一个字符串。这不起作用。@user523956我也编辑过以适应windows文件-试试看now@user523956我刚刚意识到,
      \n
      \r
      不需要两个反斜杠-试试编辑的version@user523956现在试一试-它在“展望”中缺少一个结束括号(你应该在尝试时出错),但我刚刚意识到有一种更好的方法,请参见编辑后的答案。顺便说一句,我测试了它,它对我有效。这对某些字符串有效,但似乎对某些字符串无效…我不知道为什么。输入字符串可能有问题,但无法找出它对某些字符串无效的原因。我在notepad++中检查了输入文件,但无法找到你有什么奇怪的事情会使它不起作用吗-(
      str= str.replaceAll("[\\s\\u00A0]+","");