रूबी को एक स्ट्रिंग में संयोजित करना


163

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

उदाहरण सरणी:

@arr = ['<p>Hello World</p>', '<p>This is a test</p>']

उदाहरण आउटपुट:

<p>Hello World</p><p>This is a test</p>

6
प्रलेखन आपका मित्र है! यह आपको ऐरे, स्ट्रिंग, हैश, आदि के तरीकों का अध्ययन करने में काफी मदद करेगा
मार्क थॉमस

जवाबों:


303

Array#joinविधि का उपयोग करें (तर्क यह joinहै कि स्ट्रिंग्स के बीच क्या डालें - इस मामले में एक स्थान):

@arr.join(" ")

1
क्या होगा यदि आप अंकों में शामिल हो रहे हैं? [1,2,3] => 123?
स्टीवेंसपील

3
@ mr.musicman पूर्णांक सहित, joinजो कुछ भी प्रतिक्रिया करता है to_s, की गणना के साथ काम करता है , लेकिन परिणाम हमेशा एक स्ट्रिंग होगा। यदि आप एक पूर्णांक परिणाम चाहते हैं, तो आप to_iपरिणाम पर उपयोग कर सकते हैं ।
sepp2k

1
यदि आपने शुरू में एक मल्टी-लाइन स्ट्रिंग का उपयोग करके तोड़ दिया String#lines, तो आप इसे my_string.join('')(खाली स्ट्रिंग तर्क पर ध्यान दें) का उपयोग करके इसे एक साथ बांध सकते हैं ।
फ्रैंक कोहल

@ Sepp2k ने जो कहा, joinउसे जोड़ने के लिए: #to_strपहला और #to_sदूसरा प्रयास करता है ।
ग्रेग नेविस

19

जबकि थोड़ा अधिक गूढ़ है join, आप एक स्ट्रिंग द्वारा सरणी को गुणा भी कर सकते हैं।

@arr * " "

1
क्रिप्टोकरंसी होने के अलावा, क्या इस ट्रिक का उपयोग करने पर कोई संभावित दोष है?
मारिसा

4
@marcioAlmada कोई दोष नहीं, बस न्यूनतम ओवरहेड। Array.c में रूबी ने पहली बात एक स्ट्रिंग प्रकार के लिए जाँच की है और फिर जॉइन विधि को कॉल कर रही है। इसके अलावा: शो-स्रोत चट्टानों के साथ शिकार! खुद के लिए प्रयास करें: $ Array.instance_methods.*(शो-सोर्स के लिए $ शॉर्टहैंड है)
ओकेकेट

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