我有一个字符串:String str = "[aa,bb,cc,dd]"
。我想将其转换为Groovy中的列表,如[aa, bb, cc, dd]
。是否有任何可用于此类型转换的Groovy方法?
使用正则表达式的replaceAll函数
String str = "[aa,bb,cc,dd]"
def a = str.replaceAll(~/^\[|\]$/, '').split(',')
assert a == ['aa', 'bb', 'cc', 'dd']
编辑:
以下版本略微冗长,但处理了额外的空格
String str = " [ aa , bb , cc , dd ] "
def a = str.trim().replaceAll(~/^\[|\]$/, '').split(',').collect{ it.trim()}
assert a == ['aa', 'bb', 'cc', 'dd']
String str = "[aa,bb,cc,dd]"
assert str[1..str.length()-2].tokenize(',') == ['aa', 'bb', 'cc', 'dd']
str[1..str.length()-2]
可以简化为 str[1..-2]
。 - Gergely TothHere you go:
String str= "['aa', 'bb', 'cc', 'dd']"
assert Eval.me(str) == ['aa', 'bb', 'cc', 'dd']
Eval
就是你需要的。
另一种不使用replaceAll和tokenize的方法:
def s = '[aa,bb,cc,dd]'
def a = []
s.eachMatch( /[\[]?([^\[\],]+)[,\]]?/ ){ a << it[ 1 ] }
assert '[aa, bb, cc, dd]' == a.toString()
toString
操作,最好还是防止这种情况发生。否则就会出现意外:["1,2"].toString() => [1,2] - cfrick