0

Groovy 中有没有办法从字符串中创建一个列表?即我有一个 String "[0,1]",我想将它转换为[0,1](和实际的常规列表)以便进行操作。

字符串的值可能是二维"[ [1], [2, 3]]"的 ( ),但可以肯定它始终是一个列表。

4

1 回答 1

3

您可以使用 Eval.me 但显然,请注意评估任何旧字符串

def a = Eval.me( '[ 1, 2 ]' )

一种替代方法可能是:

def a = new groovy.json.JsonSlurper().parseText( '[ 1, 2 ]' )

由于您在问题中提供的两种列表形式都是有效的 Json :-)

表现

给定以下基准测试代码:

@Grab('com.googlecode.gbench:gbench:0.4.1-groovy-2.1') // v0.4.1 for Groovy 2.1
import groovy.json.JsonSlurper

def r = benchmark( measureCpuTime:false ) { 
  'eval' {
    def a = Eval.me( '[ 1, 2 ]' )
    assert a == [ 1, 2 ]
  }
  'json' {
    def a = new JsonSlurper().parseText( '[ 1, 2 ]' )
    assert a == [ 1, 2 ]
  }
}
r.prettyPrint()

我得到输出:

eval  4661121
json     7257

So it's much quicker going the json route ;-)

于 2013-03-19T22:50:15.587 回答