首页 > 解决方案 > 用 "],[" 分割字符串

问题描述

我知道一个反斜杠/可以用来转义一些特殊字符,比如(.双反斜杠//可以用来直接转义字符串中的特殊字符。

我想拆分:

"[[0,0,1,0,0],[0,0,0,0,0],[0,0,0,1,0],[1,1,0,1,1],[0,0,0,0,0]]"

通过],[每个子数组之间。

如果我想通过将它们拆分为"[[0,0,1,0,0", "0,0,0,0,0","0,0,0,1,0","1,1,0,1,1", "0,0,0,0,0]]"第一个来获取所有子数组,我该怎么办。如果您对如何将它们直接转换为仅包含数字的子数组有更好的想法,"0,0,1,0,0", "0,0,0,0,0","0,0,0,1,0","1,1,0,1,1", "0,0,0,0,0"那就更好了。

标签: regexstringsplit

解决方案


由于这两个[]at 特殊字符regex都需要转义它们。

您可以尝试以下方法:

str.split("\\],\\[");

测试代码:

String str="[[0,0,1,0,0],[0,0,0,0,0],[0,0,0,1,0],[1,1,0,1,1],[0,0,0,0,0]]";
String[] strs = str.split("\\],\\[");
for(String s:strs){
    System.out.println(s);
}

输出结果:

[[0,0,1,0,0
0,0,0,0,0
0,0,0,1,0
1,1,0,1,1
0,0,0,0,0]]

如果要删除重复的[[and ]],只需在拆分前添加以下代码:

str = str.substring(2);
str = str.substring(0, str.length()-2);

更新的答案,如果你想消除中间和两端的所有括号regex,你可以编写正则表达式,\[?\[((\d,)+\d)然后获取每个匹配记录数据的第一组,下面是代码:

String str = "[[0,0,1,0,0],[0,0,0,0,0],[0,0,0,1,0],[1,1,0,1,1],[0,0,0,0,0]]";
String regex = "\\[?\\[((\\d,)+\\d)";
Pattern r = Pattern.compile(regex);
Matcher m = r.matcher(str);
while (m.find()) {
    System.out.println(m.group(1));
}

输出是

0,0,1,0,0
0,0,0,0,0
0,0,0,1,0
1,1,0,1,1
0,0,0,0,0

推荐阅读