2010-08-24 9 views
118

अजगर में, स्ट्रिंग प्रारूपण के लिए इस मुहावरा बहुत आमरूबी पाइथन के बराबर क्या है = "हैलो,% s।% S कहां है?" % ("जॉन", "मैरी") `

s = "hello, %s. Where is %s?" % ("John","Mary") 

रूबी में बराबर क्या है?

+3

कोई स्ट्रिंग संयोजन, केवल स्ट्रिंग स्वरूपण नहीं है। और Google कभी भी ऐसा कर सकता है जितना तेज़ हो सकता है ... मुझे यह पता लगाने में लगभग 20 सेकंड लग गए कि आप रूबी में बिल्कुल वही कर सकते हैं। – delnan

+0

आप संगतता के लिए नहीं पूछ रहे हैं, आप फ़ॉर्मेटिंग/प्रतिस्थापन के लिए पूछ रहे हैं। आपको अपना प्रश्न बदलना चाहिए। वैसे, रूबी में, concatenation + या << ऑपरेटरों के साथ किया जाता है। – David

उत्तर

202

सबसे आसान तरीका है string interpolation है। आप सीधे अपने तारों में रूबी कोड के छोटे टुकड़े इंजेक्ट कर सकते हैं।

name1 = "John" 
name2 = "Mary" 
"hello, #{name1}. Where is #{name2}?" 

आप रूबी में प्रारूप स्ट्रिंग भी कर सकते हैं।

"hello, %s. Where is %s?" % ["John", "Mary"] 

स्क्वायर ब्रैकेट का उपयोग करना याद रखें। रूबी में टुपल्स नहीं होते हैं, केवल सरणी होते हैं, और वे स्क्वायर ब्रैकेट का उपयोग करते हैं।

+1

मैं निश्चित रूप से पहले का उपयोग करता हूं, यह मुझे – David

+1

पर अधिक पठनीय लगता है, पहला काम नहीं करेगा, # {} एक चर के लिए दिखता है, इसलिए इस मामले में यह जॉन वैरिएबल प्रिंट करेगा, स्ट्रिंग नहीं " जॉन "। दूसरा एक सही दिखता है। –

+0

अच्छा बिंदु जेसन, मैं इसे और अधिक स्पष्ट करने के लिए इसे संपादित कर दूंगा। – AboutRuby

16

लगभग उसी तरह:

irb(main):003:0> "hello, %s. Where is %s?" % ["John","Mary"] 
=> "hello, John. Where is Mary?" 
+0

रुबी में, स्क्वायर ब्रैकेट का मतलब एक ट्यूपल है? मैंने सोचा कि स्क्वायर ब्रैकेट सूचियां हैं ... – TIMEX

+0

@TIMEX: यह प्रश्न मदद करेगा: http://stackoverflow.com/questions/525957/tuples-in-ruby –

+3

रुबी में टुपल्स नहीं हैं (कम से कम भाषा में जाली नहीं)। हाँ, यह एक सरणी है (पायथन में "सूची" वास्तव में सरणी कहा जाना चाहिए ...)। – delnan

9

असल में लगभग एक ही

s = "hello, %s. Where is %s?" % ["John","Mary"] 
40

रूबी 1.9 में आप यह कर सकते हैं:

s = "hello, %{name1}. Where is %{name2} ?" % { :name1 => 'John', :name2 => 'Mary' } 

संपादित करें: लापता जोड़ा ':' रों

संदर्भ: http://ruby-doc.org/core-1.9.3/String.html

+1

: name1 : name2 नहीं? – masnun

+0

मैंने * Idomatic रूबी * समकक्ष में संपादित किया - लेकिन अब मुझे लगता है कि स्वीकार्य उत्तर पहले से ही ऐसा करता है - 'संपादन' को फिर से हटा दिया गया है: -/ – toong

+0

स्ट्रिंग% ऑपरेटर के साथ हैश का उपयोग करते समय, यदि मुख्य प्रतीक संदर्भित है प्रारूप स्ट्रिंग मौजूद नहीं है, आपको एक KeyError मिल जाएगा। – user1164178

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