2013-05-08 288 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