我想用java删除文件中的最后一个换行符。我的意思是,在文件的最后有一个换行符,我想要删除它。
我尝试了网上提供的许多解决方案,但都不起作用。
下面的代码从文件中删除所有换行符
trimm.replace("\n", "").replace("\r", "");
示例文本:
ABC 123|1|2 ABC '123|1|2|"Jan 30 2018 2:34:13:000AM"|dd1|1|"Jan 30 2018 2:56:08:000AM"|EST' ABC 20180821
ABC 123|1|2 ABC '123|1|2|"Jan 30 2018 2:34:13:000AM"|dd1|1|"Jan 30 2018 2:56:08:000AM"|EST' ABC 20180821
上面的示例在末尾有换行符。我已经参考了下面的URL:
http://www.avajava.com/tutorials/lessons/how-do-i-remove-a-newline-from-the-end-of-a-string.html
https://www.java-forums.org/new-java/22655-removing-last-blank-line-txt-file.html
我不能在\n
之后使用split()
,因为很多raws都有相同的单词
我的代码:
String actual ="ABC 123|1|2 ABC '123|1|2|\"Jan 30 2018 2:34:13:000AM\"|dd1|1|\"Jan 30 2018 2:56:08:000AM\"|EST' ABC 20180821\r\n" +
"ABC 123|1|2 ABC '123|1|2|\"Jan 30 2018 2:34:13:000AM\"|dd1|1|\"Jan 30 2018 2:56:08:000AM\"|EST' ABC 20180821\r\n";
try {
File fout = new File("I:\\demo\\S2.txt");
FileOutputStream fos = new FileOutputStream(fout);
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(fos));
String trimm= actual;
/* StringBuilder sb = new StringBuilder(trimm);
int lastEnterPosition = trimm.lastIndexOf("\r\n");
sb.replace(lastEnterPosition, lastEnterPosition + 1, "");
trimm = sb.toString();*/
trimm = trimm.replaceAll("[\n\r]+$", "");
bw.write(trimm);
bw.newLine();
bw.close();
} catch (FileNotFoundException e){
// File was not found
e.printStackTrace();
} catch (IOException e) {
// Problem when writing to the file
e.printStackTrace();
}
任何变通方法都会很有帮助。
发布于 2018-06-16 02:43:37
如果您知道字符串始终以\r\n
结尾,则给出
String test = "your string that ends with a newline\r\n";
您可以使用类似于
String eol = "\r\n";
int eolLen = eol.length();
String tmp = test.substring(0, test.length()-eolLen);
使用正则表达式似乎有点过分了。您可以选择检查字符串是否真的以换行符结尾,如果可能得到错误的输入,则抛出某种类型的异常。类似于:
String check = test.substring(test.length() - eolLen);
if (!eol.equals(check)) {
throw new Exception(String.format("Expected newline, found %s", check));
}
https://stackoverflow.com/questions/50880394
复制相似问题