2013-05-08 7 views
50

के साथ स्प्लिटिंग स्ट्रिंग मैं वर्तमान में एक स्ट्रिंग 1128-2 को विभाजित करने की कोशिश कर रहा हूं ताकि मेरे पास दो अलग-अलग मान हो सकें: value1: 1128 और value2: 2 ताकि मैं प्रत्येक मान को अलग से उपयोग कर सकूं। मैंने split() की कोशिश की है लेकिन कोई सफलता नहीं है। क्या कोई विशिष्ट तरीका है grails इसे संभालता है या इसे करने का एक बेहतर तरीका है?डिलीमीटर

+0

क्यों इस के साथ काम नहीं किया मैं उत्सुक हूँ सिर्फ विभाजित? (ए, बी) = "ए-बी"। एसप्लिट ("-") मेरे लिए ठीक काम करता है (और मेरा मानना ​​है कि यह जावा में भी काम करेगा)। मैं इसका हर समय उपयोग करता हूं। संपादित करें: बस इसे देखकर वे थोड़ा अलग हैं - विभाजित एक सरणी देता है जबकि टोकनिज एक ArrayList देता है। ग्रोवी में वस्तुतः वही बात है, विभाजन का लाभ यह है कि यह जावा के लिए आसानी से बंदरगाह करता है, मुझे नहीं लगता कि टोकननाइजिंग स्ट्रिंग पर एक जावा विधि है (जब तक कि यह बिल्कुल नया नहीं है और मुझे याद आया) –

उत्तर

98

प्रयास करें:

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

यह एक अच्छा पठन है 'split' बनाम 'टोकनइज' http://www.tothenew.com/blog/groovy-tokenize-vs-split/ – Snekse

+1

ओह, और सावधान रहें यदि आप पाइप की तरह कुछ अक्षरों पर विभाजित हो रहे हैं। आपको char http://stackoverflow.com/questions/3842537/grails-splitting-a-string-that-contains-a-pipe – Snekse

+0

हाँ से बचने की आवश्यकता होगी, हाँ विभाजन एक नियमित अभिव्यक्ति का उपयोग करता है –

39

कैसे आप split बुला रहे हैं? यह इस तरह काम करता है:

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

def (value1, value2) = '1128-2'.split('-') काम करना चाहिए।

क्या कोई इसे ग्रोवी कंसोल में आजमा सकते हैं?

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

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

क्षमा करें। क्या आप उपरोक्त दावे की कोशिश कर सकते हैं? – dmahapatro

+0

यह काम करता है। अच्छा – Giannis

2

विभाजन ग्रोवी में इस तरह से काम नहीं करता है। आप tokenize उपयोग करने के लिए है ...

डॉक्स देखें:

http://groovy-lang.org/gdk.html#split()

संबंधित मुद्दे