2013-05-08 11 views
50

Obecnie próbuję podzielić ciąg 1128-2, tak aby można było dwie oddzielne wartości ex: wartość1: 1128 i wartość2: 2, tak aby można następnie użyć każdej wartości osobno. Próbowałem split(), ale bez powodzenia. Czy istnieje szczególny sposób, w jaki grails radzi sobie z tym lub lepszym sposobem na zrobienie tego?Dzielenie ciąg z ogranicznikiem

+0

Jestem ciekaw, dlaczego to nie działa z tylko podzielić? (a, b) = "a-b" .split ("-") działa dobrze dla mnie (I wierzę, że to działałoby również w Javie). Używam go cały czas. EDYTOWANIE: Patrząc na to są one nieco inne - split zwraca tablicę, a tokenize zwraca tablicę ArrayList. Praktycznie to samo w Groovy, podział ma tę zaletę, że łatwo przenosi się do Javy, nie sądzę, że tokenizacja jest metodą java na łańcuchu (chyba że jest całkiem nowa i ja za nią tęsknię) –

Odpowiedz

98

Spróbuj:

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

To jest dobra lektura na 'split' kontra' tokenize' http://www.tothenew.com/blog/groovy-tokenize-vs-split/ – Snekse

+1

A, bądź ostrożny, jeśli dzielisz pewne znaki, takie jak potok '|'. Będziesz musiał uciec z char http://stackoverflow.com/questions/3842537/grails-splitting-a-string-that-contains-a-pipe – Snekse

+0

Tak, cos split używa wyrażenia regularnego –

39

Jak dzwonisz split? Działa to tak:

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

def (value1, value2) = '1128-2'.split('-') powinien działać.

Czy ktoś może wypróbować to w konsoli Groovy?

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

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

Przepraszam. Czy możesz wypróbować powyższe stwierdzenie? – dmahapatro

+0

To działa. Miły – Giannis

Powiązane problemy