java 双分割到 String[ ][ ]

标签 java arrays string split

我在想出一种方法来获取字符串并使用 .split() 两次来创建嵌套数组时遇到问题。

例如,如果我有字符串 1|2|3#1|2 然后我使用 split("#"),我最终会得到: [“1|2|3”,“1|2”]

然后我想以某种方式 .split("|") 内部字符串,所以我最终得到: [ [1,2,3] , [1,2] ]

但它必须是一个String[][]

我已经尝试使用 ArrayList 作为外部数组,因此我有一个 ArrayList,然后仅使用 .add() 来使用每个内部数组构建它。

但后来我不知道如何将其转换为 String[][]

我可能错过了一些明显的东西,但我已经尝试了大约一个小时,但没有运气。

最佳答案

你走在正确的道路上。在第一次分割后获得String[]后,分配您的String[][],然后将其填充到循环中,分割第一个数组中的字符串:

String str = "1|2|3#1|2";
String[] strs = str.split("#");
String[][] result = new String[strs.length][];
for (int i = 0; i < strs.length; ++i) {
    result[i] = strs[i].split("\\|");
}

Live Example

请注意,由于 split 接受定义正则表达式的字符串,因此必须转义其中的 | (因为 | 有特殊含义在正则表达式中)。您可以使用反斜杠转义正则表达式中的内容。由于我使用字符串文字来编写正则表达式,因此要在字符串中实际放置反斜杠,我必须对其进行转义(使用另一个反斜杠)。

或者使用流(感谢 ChenZhou 指出了 80% 的路径),感谢 the JavaDoc 完成了剩下的部分:

String[] strs = "1|2|3#1|2".split("#");
String[][] result = Stream.of(strs).map(e -> e.split("\\|")).toArray(String[][]::new);

Live Example

关于java 双分割到 String[ ][ ],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58603888/

相关文章:

java - 为 'between' 字符串创建 Hibernate 限制

java - 从结果中识别出 "best bang for the buck"项

arrays - Swift 过滤数组中的自定义对象

string - 无法检查使用 reader.ReadString 捕获的字符串上的 strings.HasSuffix

java - 当垃圾收集器消除该对象时,该对象去了哪里?

Java Postfix 计算器错误

java - android studio 改变 API<23 的音频播放速度

java - 我如何使用此代码更改为没有任何数组?

c++ - 将 _bstr_t 就地转换为 char 数组

java - 将创建多少对象以及有多少对象可用于垃圾回收?