2009-08-26 12 views
68

स्ट्रिंग ex="test1, test2, test3, test4, test5"रूबी में एक स्ट्रिंग को कैसे विभाजित करें और पहले आइटम को छोड़कर सभी आइटम प्राप्त करें?

जब मैं

ex.split(",").first 

का उपयोग यह रिटर्न

"test1" 

अब मैं शेष आइटम प्राप्त करना चाहते हैं, जैसे कि `" test2, test3, test4, test5 "है। अगर मैं

ex.split(",").last 

का उपयोग यह रिटर्न केवल

"test5" 

कैसे सभी शेष पहले एक लंघन आइटम प्राप्त करने?

+0

रुको, आप 'एरे' पर 'स्प्लिट' (एक 'स्ट्रिंग' विधि) का उपयोग कर रहे हैं? –

+0

क्षमा करें guyzz ... यहाँ स्ट्रिंग का उपयोग कर रहा हूँ .. मैं प्रश्न संपादित करूँगा – sgi

उत्तर

84

इस प्रयास करें:

first, *rest = ex.split(/, /) 

अब first पहला मान हो जाएगा, rest सरणी के बाकी हो जाएगा।

+1

रूबी के किस संस्करण में? मैंने इसे 1.8.7 में कोशिश की और 'बाकी' में केवल "test2" शामिल है। –

+6

शायद 'पहला, * बाकी = ex.split (/, /) ' – ezpz

+0

हाँ, मैं उस समय मेरी लाइन का परीक्षण नहीं कर सका। 'पहले, * rest = ex.split (/, /)' वास्तव में मेरा मतलब था। इसे साफ करने के लिए धन्यवाद। – avdgaag

14

चूंकि आपके पास एक सरणी है, तो आप वास्तव में चाहते हैं Array#slice, split नहीं है।

rest = ex.slice(1 .. -1) 
# or 
rest = ex[1 .. -1] 
+3

तो एक स्ट्रिंग के साथ आप 'ex.split (/, /)। टुकड़ा (1 ..- 1)' चाहते हैं, लेकिन सभी तत्वों को प्राप्त करने के लिए, मान लें कि आप नहीं हैं पहले मूल्य में रुचि रखते हैं। – avdgaag

9

शायद आपने कुछ चीजों को गलत टाइप किया है।

string = "test1, test2, test3, test4, test5" 

तो आप इसे विभाजित करना ही महत्वपूर्ण सबस्ट्रिंग रखना चाहते हैं:

array = string.split(/, /) 

और अंत में आप केवल सभी तत्वों की जरूरत से मैं क्या इकट्ठा, आप इस तरह के रूप में एक स्ट्रिंग के साथ शुरू पहले को छोड़कर:

# We extract and remove the first element from array 
first_element = array.shift 

# Now array contains the expected result, you can check it with 
puts array.inspect 

क्या यह आपके प्रश्न का उत्तर देता था?

5
ex="test1,test2,test3,test4,test5" 
all_but_first=ex.split(/,/)[1..-1] 
37
ex.split(',', 2).last 

2 अंत में कहते हैं: 2 टुकड़े, नहीं अधिक में विभाजित।

सामान्य रूप से विभाजित मूल्य के रूप में कई टुकड़ों में कटौती करेगा, दूसरे मूल्य का उपयोग करके आप कितने टुकड़े प्राप्त कर सकते हैं सीमित कर सकते हैं। के बजाय, एक सरणी के रूप में

["test1", "test2, test3, test4, test5"] 

: ex.split(',', 2) का उपयोग करके आप दे देंगे

["test1", "test2", "test3", "test4", "test5"] 
+0

डाउनसाइड आपको स्ट्रिंग के बजाए सरणी के रूप में पहले मानों के अलावा सभी को फिर से विभाजित करना होगा। अभी भी एक अच्छी चाल है। इसके अलावा, 'ex.split (', ', 2) .last' का उपयोग करके आपके द्वारा निर्दिष्ट सरणी को वापस नहीं किया जाएगा, केवल उसका अंतिम मान, है ना? – avdgaag

+0

कॉपी-पेस्ट गलती हाहा, इसे ठीक करें – user163365

5

यू उन्हें एक सरणी यू पहले से ही पता था कि के रूप में उपयोग करना चाहते हैं, और यू एक के रूप में उनमें से हर एक का उपयोग कर सकते हैं अलग पैरामीटर ... इस प्रयास करें:

parameter1,parameter2,parameter3,parameter4,parameter5 = ex.split(",") 
5

क्षमा थोड़ा पार्टी और थोड़ा के लिए देर से हैरान कर कोई भी उल्लेख किया है कि drop विधि:

ex="test1, test2, test3, test4, test5" 
ex.split(",").drop(1).join(",") 
=> "test2,test3,test4,test5" 
2

तुम भी ऐसा कर सकते हैं:

String is ex="test1, test2, test3, test4, test5" 
array = ex.split(/,/) 
array.size.times do |i| 
    p array[i] 
end 
0

कोशिश split(",")[i] जहां i परिणाम सरणी में अनुक्रमणिका है। split

["test1", " test2", " test3", " test4", " test5"] 

से नीचे सरणी देता है जिसका तत्व अनुक्रमणिका द्वारा उपयोग किया जा सकता है।

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