我想将下面的String转换为简单的二维数组(Object [] [])。
String personArray ="{{Melroy,25,India},{Jack,26,USA}}"; // nothing but a simple string with appearance of a 2D array
这可以在第一时间完成吗?
如果是这样,最简单的方法是什么?
任何帮助任何输入将不胜感激。
答案 0 :(得分:1)
从头开始,确定数据结构的格式,
好像你的内部数组有格式{String, Number, String}
,为了找到它,我们将创建简单的正则表达式\\{([A-Za-z]+),([0-9]+),([A-Za-z]+)\\}
要使其正常工作,您可能需要添加一些修改,但是下面的代码适用于您的小案例
String personArray ="{{Melroy,25,India},{Jack,26,USA}}";
Pattern pattern = Pattern.compile("\\{([A-Za-z]+),([0-9]+),([A-Za-z]+)\\}");
Matcher matcher = pattern.matcher(personArray);
List<Object[]> list = new ArrayList<>();
//using list as we don't know number of final elements,
int start = 0;
while(
matcher.find(start)){
list.add(new Object[]{matcher.group(1),matcher.group(2),matcher.group(3)});
start = matcher.end();
}
//convert to array, to have required format
Object[][] array = list.toArray(new Object[0][]);
//test result
for (Object[] arr : array)
System.out.println(Arrays.toString(arr));