2 回答
![?](http://img1.sycdn.imooc.com/545868b60001587202200220-100-100.jpg)
TA贡献1859条经验 获得超6个赞
这是在不使用第 3 方库的情况下解析该文本的一种方法。
public static int[][] parse(String text) {
if (! text.startsWith("[[") || ! text.endsWith("]]"))
throw new IllegalArgumentException("Invalid text: " + text);
String[] subTexts = text.substring(2, text.length() - 2).split("\\],\\[");
int[][] result = new int[subTexts.length][];
for (int i = 0; i < subTexts.length; i++) {
String[] valueTexts = subTexts[i].split(",");
result[i] = new int[valueTexts.length];
for (int j = 0; j < valueTexts.length; j++)
result[i][j] = Integer.parseInt(valueTexts[j]);
}
return result;
}
测试
System.out.println(Arrays.deepToString(parse("[[1,3,4],[43,6,3],[4,2,5]]")));
输出
[[1, 3, 4], [43, 6, 3], [4, 2, 5]]
![?](http://img1.sycdn.imooc.com/533e4ce900010ae802000200-100-100.jpg)
TA贡献1818条经验 获得超11个赞
这是我的尝试(虽然有点冗长)。该程序int[][]在每种情况下都使用以下三个输入字符串创建了- 单独尝试时:
"[[1,3,4],[43,6,3],[4,2,5]]"
"[[]]"
"[[],[1,2,3],[0]]"
程序代码:
import java.util.*;
import java.util.stream.*;
public class ArrayParsing {
private final static String input = "[[1,3,4],[43,6,3],[4,2,5]]";
private final static String open = "[";
private final static String open2 = "[[";
private final static String close = "]";
private final static String close2 = "]]";
private final static List<int []> outerContent = new ArrayList<>();
public static void main(String [] args) {
String content = "";
String token = "";
boolean flag = false;
for (int i = 0; i < input.length(); i++) {
token = input.substring(i, i+1);
if (token.equals(open) || token.equals(open2)) {
content = "";
flag = false;
}
else if (token.equals(close) && !flag) {
buildArray(content);
flag = true;
}
else {
content = content.concat(token);
}
}
int [][] result = outerContent.toArray(new int[outerContent.size()][]);
System.out.println(Arrays.deepToString(result));
}
private static void buildArray(String in) {
int [] intArray = new int[0];
if (in.trim().length() > 0) {
String [] elements = in.split(",");
intArray = Arrays.stream(elements)
.mapToInt(s -> Integer.parseInt(s))
.toArray();
}
outerContent.add(intArray);
}
}
添加回答
举报