2013-05-08 3 views
50

Attualmente sto provando a dividere una stringa 1128-2 in modo che possa avere due valori separati ex: value1: 1128 e value2: 2 in modo che possa quindi utilizzare ciascun valore separatamente. Ho provato split() ma senza successo. C'è un modo specifico in cui grails gestisce questo o un modo migliore di farlo?Stringa di divisione con delimitatore

+0

Sono curioso di sapere il motivo per cui questo non ha funzionato con un solo dividere? (a, b) = "a-b" .split ("-") funziona bene per me (e credo che funzionerebbe anche in Java). Io lo uso per tutto il tempo. EDIT: Basta guardarlo sono leggermente diversi - split restituisce un array mentre tokenize restituisce un ArrayList. Praticamente la stessa cosa in Groovy, la divisione ha il vantaggio di essere facilmente trasferibile su Java, non penso che il tokenize sia un metodo java su String (a meno che non sia abbastanza nuovo e l'ho perso) –

risposta

98

Prova:

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

Questa è una buona lettura su 'split' vs' tokenize' http://www.tothenew.com/blog/groovy-tokenize-vs-split/ – Snekse

+1

Oh, e stai attento se stai dividendo alcuni caratteri come un pipe '|'. Dovrai sfuggire al char http://stackoverflow.com/questions/3842537/grails-splitting-a-string-that-taintain-a-pipe – Snekse

+0

Sì, cos split usa un'espressione regolare –

39

Come stai chiamando split? Funziona in questo modo:

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

def (value1, value2) = '1128-2'.split('-') dovrebbe funzionare.

Qualcuno può provare questo in Groovy Console?

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

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

Scusami. Puoi per favore provare la suddetta affermazione? – dmahapatro

+0

Funziona. Bello – Giannis