我有一个包含电子邮件标题及其值的文本文件。如下所示:
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中做任何建议。
答案 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]+","");