You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何按行拆分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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 18:28:21