如何拆分多维数组的字符串

How to split string of mulitdimensional array

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

我期望的结果是这样的

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

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


我尝试使用拆分方法,然后将每个数组放入数组列表变量“data”中。 结果:



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[=12=](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)) == ',');

你得到 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());