将int数组的字符串表示转换为Groovy列表

3

如果我获得了一个表示整数数组的字符串,例如下面的字符串:

String d = "[2,3,4,5]"

我该如何将其转换为字符串数组?

String[] f = 将d转换为字符串数组

另外,我该如何将其转换为整数数组?

int[] g = 将d转换为整数数组

int[] f = convert d to array of int
2个回答

7

我在寻找其他解决方案时,发现我的值包含点号的字符串。我找到了 这个

这段代码应该适用于你:

"[1,2,3]".tokenize(',[]')*.toInteger()

4
您可以这样使用Eval.me:
String[] f = Eval.me( d )*.toString()

或者

int[] i = Eval.me( d )

但是要小心,如果这个字符串由第三方输入,可能会做一些危险的事情,存在巨大的安全风险...为了避免这种情况,你需要使用类似以下的方法自己解析:

def simplisticParse( String input, Class requiredType ) {
  input.dropWhile { it != '[' }
       .drop( 1 )
       .takeWhile { it != ']' }
       .split( ',' )*.asType( requiredType )
}

String[] s = simplisticParse( d, String )
int[] i = simplisticParse( d, Integer )

还应注意到你在问题标题中说的是“Groovy列表”,但实际上它们是数组,将String[]int[]改为List,就可以得到一个对象的列表了 :-) - tim_yates

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接