java如何删除空行
删除Java字符串中的空行
使用正则表达式替换空行是最常见的方法。空行通常由行首和行尾之间的空白字符(包括换行符)组成。
String text = "Line1\n\nLine2\n \nLine3";
String result = text.replaceAll("(?m)^[ \t]*\r?\n", "");
System.out.println(result);
正则表达式说明:
(?m)启用多行模式,使^和$匹配每行的开始和结束^匹配行首[ \t]*匹配零个或多个空格或制表符\r?\n匹配Windows或Unix风格的换行符
使用Apache Commons Lang库
如果项目已经使用了Apache Commons Lang库,可以使用StringUtils类更简洁地处理:
import org.apache.commons.lang3.StringUtils;
String text = "Line1\n\nLine2\n \nLine3";
String result = StringUtils.replacePattern(text, "(?m)^[ \t]*\r?\n", "");
处理多平台换行符
不同操作系统使用不同的换行符(Windows使用\r\n,Unix使用\n)。以下方法可以处理各种换行符:
String text = "Line1\r\n\r\nLine2\n\nLine3\r \r\nLine4";
String result = text.replaceAll("(?m)^\\s*\r?\n", "");
保留非空白的单行
如果需要保留包含空白字符但不完全为空的单行:
String text = "Line1\n \nLine2\n\t\nLine3";
String result = text.replaceAll("(?m)^[ \t]+\r?\n", "");
流式处理文本文件
当处理大型文本文件时,可以使用流式处理逐行读取并过滤空行:

try (Stream<String> lines = Files.lines(Paths.get("input.txt"))) {
List<String> nonEmptyLines = lines
.filter(line -> !line.trim().isEmpty())
.collect(Collectors.toList());
Files.write(Paths.get("output.txt"), nonEmptyLines);
}






