【问题标题】:How to split string of mulitdimensional array如何拆分多维数组的字符串
【发布时间】:2022-01-02 14:18:48
【问题描述】:

我这里有字符串 String str1 = "{{1,2,3},{4,5,6},{7,8,9}}"

我期待的结果是这样的

{1,2,3}
{4,5,6}
{7,8,9}

我在java语言中使用什么方法? 谢谢。


我尝试使用 split 方法,然后将每个数组放入 arraylist 变量“数据”中。 结果:



1,2,3
,
4,5,6
,
7,8,9

并尝试删除为空且只有字符串值的数据数组","结果:



1,2,3
,
4,5,6
,
7,8,9
Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 0
        at java.base/java.lang.StringLatin1.charAt(StringLatin1.java:48)
        at java.base/java.lang.String.charAt(String.java:712)
        at io.jhdf.examples.test2.lambda$0(test2.java:26)   
        at java.base/java.util.ArrayList.removeIf(ArrayList.java:1672)
        at java.base/java.util.ArrayList.removeIf(ArrayList.java:1660)
        at io.jhdf.examples.test2.main(test2.java:26)

这是我的代码:

ArrayList<String> data = new ArrayList<String>();

        String str1 = "{{1,2,3},{4,5,6},{7,8,9}}";
        String[] arrOfStr1 = str1.split("[{}]");

        //System.out.println(arrOfStr[2].length());

        for (String a1 : arrOfStr1){
            data.add(a1);
            System.out.println(a1);
        }
        data.removeIf(n -> (n.charAt(0)) == ',');

【问题讨论】:

  • System.out.println(str1.substring(1, str.length() - 1).replace(',', '\n'));
  • 您希望有 3 个子字符串,还是想将该字符串解析为 int[][] 或类似的东西?到目前为止,您尝试了什么?

标签: java arrays multidimensional-array


【解决方案1】:

您会得到 StringIndexOutOfBoundsException,因为您的 arrOfStr1 数组中有一些空字符串。 n.charAt(0) 表达式导致异常,因为某些字符串中没有字符。在尝试删除单个逗号之前,请使用调试器查看 data 数组中的真正内容。

无论如何,这里是修复,修改代码中的一行:

 data.removeIf(n -> n.equals("") || ( n.charAt(0)) == ',');

顺便说一句,您也可以使用 Streams。整个代码也可能是这样的:

String str1 = "{{1,2,3},{4,5,6},{7,8,9}}";

    List<String> data =  Arrays.stream(str1.split("[{}]"))
            .filter(n -> !n.equals("") && ( n.charAt(0)) != ',')
            .collect(Collectors.toList());

【讨论】:

  • 它有效。谢谢。我没有注意结果前两行中的空数组
猜你喜欢
  • 2019-01-17
  • 1970-01-01
  • 2020-01-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多