如何按行拆分Java文本块?(含代码示例与预期结果)
Java文本块按行拆分的实现方案
先看原始的Java文本块定义:
String textblock = """ A : 111 B : 111 C : 1111 """;
我们的目标是把它按行拆分,得到不含空行、且去除每行前导缩进的字符串数组(注:你给出的预期结果里B和C的值属于笔误,以下实现按原始文本内容输出)。
方法一:用String.lines()(Java 11+推荐)
lines()方法会自动识别所有换行符(包括\n、\r\n等),并跳过末尾空行,再结合流式处理完成缩进去除和空行过滤:
String[] splitedTextBlock = textblock.lines() .map(String::stripLeading) // 去除每行前导空格 .filter(line -> !line.isBlank()) // 过滤全空白行 .toArray(String[]::new);
执行后得到的数组为:{"A : 111", "B : 111", "C : 1111"}
方法二:用split()结合正则表达式
如果需要兼容更低版本Java,可以用split("\\R")匹配所有换行符拆分文本,再做后续处理:
import java.util.Arrays; // ... String[] splitedTextBlock = Arrays.stream(textblock.split("\\R")) .map(String::stripLeading) .filter(line -> !line.isBlank()) .toArray(String[]::new);
注意事项
- 若需要保留文本块的特定缩进,不要用
stripLeading(),可根据固定缩进长度截取,比如每行有8个前导空格就用line.substring(8) - 若只需过滤完全空的行(不包含全空白行),把
!line.isBlank()换成!line.isEmpty()即可
内容的提问来源于stack exchange,提问作者Hassen Gaaya
相关产品推荐
相关产品推荐

