2013-05-08 235 views
50

我目前正在尝试分割字符串1128-2,这样我可以有两个单独的值,例如:value1:1128和value2:2,以便我可以分别使用每个值。我试过split()但没有成功。有没有一种特定的方式来处理这个或更好的方式吗?分隔字符串与分隔符

+0

我很好奇,为什么不与工作只是分裂? (a,b)=“a-b”.split(“ - ”)对我来说很好(我相信它也可以在Java中工作)。我用它所有的时间。编辑:只是看着它,他们有点不同 - 分割返回一个数组,而tokenize返回一个ArrayList。在Groovy中,事实上同样的事情,分割的优点是它可以轻松移植到Java,我不认为tokenize是String上的Java方法(除非它是一个相当新的并且我错过了它) – 2016-09-01 16:55:51

回答

98

尝试:

def (value1, value2) = '1128-2'.tokenize('-') 
+17

这是一个很好的阅读'split'和'tokenize' http://www.tothenew.com/blog/groovy-tokenize-vs-split/ – Snekse 2015-12-23 17:02:25

+1

哦,并且要小心如果你正在拆分某些字符,如管道'|'。你需要转义字符http://stackoverflow.com/questions/3842537/grails-splitting-a-string-that-c​​ontains-a-pipe – Snekse 2015-12-23 17:19:17

+0

是的,cos分裂使用正则表达式 – 2015-12-23 17:23:26

39

你怎么打电话split?它的工作原理是这样的:

def values = '1182-2'.split('-') 
assert values[0] == '1182' 
assert values[1] == '2' 
16

def (value1, value2) = '1128-2'.split('-')应该工作。

任何人都可以请试试这在Groovy控制台?

def (v, z) = '1128-2'.split('-') 

assert v == '1128' 
assert z == '2' 
+4

对不起。你可以试试上面的说法吗? – dmahapatro 2013-05-08 22:19:37

+0

它确实有效。尼斯 – Giannis 2015-04-22 10:20:58