2013-06-20 2 views
3

Если я даюсь строку, которая является repsentation из массива междунар, как показано нижеПреобразовать строковое представление массива междунар к заводной списку

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

Как преобразовать в массив строки?

String[] f = convert d to array of String

Кроме того, как преобразовать в массив межд?

int[] f = convert d to array of int 

ответ

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) 
+0

Также следует отметить, что вы говорите, _ «заводной список» _ в названии вопроса, но те массивы, изменение 'String [] или' INT [ ] 'to' List', и вместо этого у вас будет список объектов :-) –

7

Я искал другие решения, так как мои значения содержали строки, в том числе точки в них и found this.

Этот код должен работать для вас:

"[1,2,3]".tokenize(',[]')*.toInteger() 
Смежные вопросы