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

字符串先按'E'再按空格拆分后,如何返回String[][]?

解决字符串拆分的二维数组返回问题

你的核心问题在于循环中过早return导致只返回第一个子数组,以及没有用合适的容器存储所有拆分结果。下面是具体的解决思路和代码实现:

思路分析

  1. 先按E拆分原字符串,得到一级子串数组
  2. 遍历每个一级子串,处理掉前后多余的空格(避免拆分出空字符串),再按空格拆分得到二级子数组
  3. 用一个集合(比如List<String[]>)来收集所有二级子数组,最后转成String[][]返回

完整代码实现

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class StringSplitDemo {
    public static void main(String[] args) {
        String str = "30 3 3 11 5 2 2 7 9 2 1 20 E 21 2 2 11 14 5 2 1 7 3 6 E 30 4 3 11 5 21 2 15 20 3 17 9 5 1 32 E";
        
        // 第一步:按'E'拆分原字符串
        String[] firstSplit = str.split("E");
        
        // 用List动态存储所有拆分后的子数组
        List<String[]> resultList = new ArrayList<>();
        
        for (String subStr : firstSplit) {
            // 去除子串前后的空格,避免拆分出无效空元素
            String trimmedSub = subStr.trim();
            // 跳过拆分后为空的子串(比如原字符串末尾的'E'产生的空串)
            if (trimmedSub.isEmpty()) {
                continue;
            }
            // 按任意数量的空格拆分(\\s+匹配一个或多个空白字符,兼容多空格场景)
            String[] secondSplit = trimmedSub.split("\\s+");
            // 将当前子数组加入集合
            resultList.add(secondSplit);
        }
        
        // 将List转换为目标二维数组
        String[][] finalResult = resultList.toArray(new String[0][]);
        
        // 验证输出结果
        for (String[] arr : finalResult) {
            System.out.println(Arrays.toString(arr));
        }
    }
}

关键细节说明

  • 取消过早return:你之前的代码在循环内直接return,导致只返回第一个子数组,必须把所有结果收集完成后再统一返回
  • 优化空格拆分逻辑:用trim()清理子串前后空格,再用split("\\s+")替代split(" "),可以处理连续多空格的情况,不会产生空字符串元素
  • 过滤无效空串:原字符串末尾的E会拆分出空串,通过isEmpty()判断后跳过,避免向结果中添加无效的空数组

运行这段代码后,得到的finalResult就是你期望的二维数组结构啦!

内容的提问来源于stack exchange,提问作者gqli

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:07:07