रूबी में एक सीमांकित स्ट्रिंग को कैसे विभाजित करें और इसे एक सरणी में बदलें?


जवाबों:


412
>> "1,2,3,4".split(",")
=> ["1", "2", "3", "4"]

या पूर्णांकों के लिए:

>> "1,2,3,4".split(",").map { |s| s.to_i }
=> [1, 2, 3, 4]

या माणिक के बाद के संस्करणों के लिए (> = 1.9 - जैसा कि एलेक्स द्वारा बताया गया है):

>> "1,2,3,4".split(",").map(&:to_i)
=> [1, 2, 3, 4]

28
याद रखें, यदि आप> = 1.9 का उपयोग कर रहे हैं, तो आप "1,2,3,4" .plplit (',') '।' मैप (: to_i) का उपयोग कर सकते हैं
एलेक्स फोर्ट

7
आप सक्रिय समर्थन उपयोग कर रहे हैं आप कर सकते हैं: नक्शा (और: to_i)
jonnii


19

के String Integerरूप में अंतरिक्ष के बिनाString

arr = "12345"

arr.split('')

output: ["1","2","3","4","5"]

के लिए String Integerके रूप में अंतरिक्ष के साथString

arr = "1 2 3 4 5"

arr.split(' ')

output: ["1","2","3","4","5"]

के String Integerरूप में अंतरिक्ष के बिनाInteger

arr = "12345"

arr.split('').map(&:to_i)

output: [1,2,3,4,5]

स्ट्रिंग के लिए

arr = "abc"

arr.split('')

output: ["a","b","c"]

स्पष्टीकरण :

  1. arr -> स्ट्रिंग जो आप किसी भी कार्य को करने जा रहे हैं।
  2. split() -> एक विधि है, जो इनपुट को विभाजित करती है और इसे सरणी के रूप में संग्रहीत करती है।
  3. ''या ' 'या ','-> एक मूल्य है, जो की जरूरत है दिया स्ट्रिंग से निकाले जाने का है।

1

एक स्ट्रिंग को बदलने के लिए सबसे सरल तरीका जो एक सीमांकक की तरह एक सीमांकक है बस विभाजन विधि का उपयोग करने के लिए है

"1,2,3,4".split(',') # "1", "2", "3", "4"]

आप रूबी डॉक्स में विभाजित विधि का उपयोग करने के बारे में अधिक जानकारी पा सकते हैं

इन पदार्थों की एक सरणी को वापस करके, एक सीमांकक के आधार पर सब्सट्रिंग्स में विभाजित होते हैं।

यदि पैटर्न एक स्ट्रिंग है, तो स्ट्रेट को विभाजित करते समय इसकी सामग्री को सीमांकक के रूप में उपयोग किया जाता है। यदि पैटर्न एक एकल स्थान है, तो व्हाट्सएप पर स्ट्रेट को विभाजित किया जाता है, जिसमें प्रमुख व्हाट्सएप और सन्निहित व्हाट्सएप के पात्रों को अनदेखा किया जाता है।

यदि पैटर्न एक Regexp है, तो str को विभाजित किया जाता है जहां पैटर्न मैच करता है। जब भी पैटर्न एक शून्य-लंबाई स्ट्रिंग से मेल खाता है, str व्यक्तिगत वर्णों में विभाजित होता है। यदि पैटर्न में समूह होते हैं, तो संबंधित मैच सरणी में भी वापस आ जाएंगे।

यदि पैटर्न छोड़ा गया है, तो $ का मूल्य; प्रयोग किया जाता है। अगर $; nil (जो कि डिफ़ॉल्ट है), str को व्हॉट्सएप पर विभाजित किया जाता है जैसे कि '' निर्दिष्ट किए गए थे।

यदि सीमा पैरामीटर को छोड़ दिया जाता है, तो पीछे वाले नल फ़ील्ड को दबा दिया जाता है। यदि सीमा एक सकारात्मक संख्या है, तो उस क्षेत्र की अधिकांश संख्या वापस आ जाएगी (यदि सीमा 1 है, तो संपूर्ण स्ट्रिंग को एक सरणी में केवल प्रविष्टि के रूप में वापस किया जाता है)। यदि ऋणात्मक है, तो लौटे हुए फ़ील्ड की संख्या की कोई सीमा नहीं है, और पीछे वाले अशक्त फ़ील्ड को दबाया नहीं जाता है।


-1
"12345".each_char.map(&:to_i)

each_charमूल रूप से ऐसा ही करता है split(''): यह एक स्ट्रिंग को अपने वर्णों की एक सरणी में विभाजित करता है।

हम्म, मुझे अभी पता चला है कि मूल प्रश्न में स्ट्रिंग में अल्पविराम होता है, इसलिए मेरा उत्तर वास्तव में मददगार नहीं है ;-(


3
क्या आप यह बताने के लिए अपने उत्तर को संपादित कर सकते हैं कि आप क्या कर रहे हैं?
मज़ारगोज़ा
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.