2013-05-08 8 views
50

Ich versuche gerade eine Zeichenfolge 1128-2 zu teilen, so dass ich zwei separate Werte haben kann: Wert1: 1128 und Wert2: 2, so dass ich dann jeden Wert separat verwenden kann. Ich habe versucht split() aber ohne Erfolg. Gibt es einen spezifischen Weg, wie Grals mit diesem oder einem besseren Weg umgeht?Splitting String mit Delimiter

+0

Ich bin neugierig, warum dies nicht nur mit funktionierten aufgeteilt? (a, b) = "a-b" .split ("-") funktioniert gut für mich (Und ich glaube, es würde auch in Java funktionieren). Ich benutze es die ganze Zeit. BEARBEITEN: Betrachten Sie es einfach, sie sind etwas anders - Split gibt ein Array zurück, während Tokenize eine ArrayList zurückgibt. Praktisch die gleiche Sache in Groovy, die Aufteilung hat den Vorteil, dass es leicht zu Java portiert, ich glaube nicht, dass tokenize eine Java-Methode für String ist (es sei denn, es ist eine ziemlich neue und ich habe es verpasst) –

Antwort

98

Versuchen:

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

Dies ist ein gutes weiterlesen 'split' vs' tokenize' http://www.tothanew.com/blog/groovy-tokenize-vs-split/ – Snekse

+1

Oh, und sei vorsichtig, wenn du bestimmte Zeichen wie eine Pipe '|' aufteilst. Sie müssen das char entkommen http://stackoverflow.com/questions/3842537/grails-splitting-a-string-that-contains-a-pipe – Snekse

+0

Ja, Cos-Split verwendet einen regulären Ausdruck –

39

Wie rufen Sie split? Es funktioniert wie folgt:

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

def (value1, value2) = '1128-2'.split('-') sollte funktionieren.

Kann jemand bitte versuchen Sie dies in Groovy Console?

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

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

Entschuldigung. Können Sie bitte die obige Behauptung versuchen? – dmahapatro

+0

Es funktioniert. nett – Giannis

Verwandte Themen