我知道一个反斜杠<PropertyGroup>
<DisableFastUpToDateCheck>True</DisableFastUpToDateCheck>
</PropertyGroup>
可用于转义某些特殊字符,例如/
,(
,而双反斜杠.
可用于转义特殊字符直接输入一个字符串。
我想分开:
//
通过"[[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 :(得分:4)
由于[
中的]
和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]]
如果要删除重复的[[
和]]
,只需在拆分前添加以下代码即可:
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
答案 1 :(得分:1)
您输入的内容是有效的JSON,因此建议您使用JSON解析器。
代码如下:
import javax.json.*;
JsonReader jsonReader = Json.createReader(new StringReader("[[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]]"));
JsonArray array = jsonReader.readArray();
jsonReader.close();
System.out.println("Array #2: " + array.getJsonArray(1)); // should give [0,0,0,0,0]
System.out.println("Array #3, 4th value: " + array.getJsonArray(2).getInt(3)); // should give 1
答案 2 :(得分:-1)
如果您想将String
转换为2d-Array
,则可以使用以下函数,这些函数采用String
并返回2d-Array
个int
:
private static int[][] getMatrixFromString(String arrayStrinng) {
String arrayString = arrayStrinng.substring(1, arrayStrinng.length() - 1);
String[] splitMajor = arrayString.split("],");
int rowCount = splitMajor.length, colCount = 0;
int[][] matrix = new int[rowCount][];
for (int row = 0; row < splitMajor.length; row++) {
String[] splitMinor = splitMajor[row].split(",");
if (colCount == 0) {
colCount = splitMinor.length;
matrix = new int[rowCount][colCount];
}
for (int i = 0; i < colCount; i++) {
if (splitMinor[i].startsWith("["))
splitMinor[i] = splitMinor[i].substring(1);
if (splitMinor[i].endsWith("]"))
splitMinor[i] = splitMinor[i].substring(0, splitMinor[i].length() - 1);
matrix[row][i] = Integer.parseInt(splitMinor[i]);
}
}
return matrix;
}