रूबी पायथन के `s =” हैलो के बराबर है,% s। % S कहाँ है? ” % ("जॉन", "मैरी") `


141

पायथन में, स्ट्रिंग प्रारूपण के लिए यह मुहावरा काफी सामान्य है

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

रूबी में समतुल्य क्या है?


3
कोई स्ट्रिंग संघनन नहीं है, केवल स्ट्रिंग प्रारूपण है। और google इस उत्तर को और भी तेजी से दे सकता है, तो कभी भी ... मुझे यह पता लगाने में लगभग 20 सेकंड का समय लगा कि आप रूबी में बिल्कुल ऐसा ही कर सकते हैं।

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

जवाबों:


246

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

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

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

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

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


1
मैं निश्चित रूप से पहले एक का उपयोग करूंगा, यह मेरे लिए अधिक पठनीय लगता है
डेविड

1
पहला काम नहीं करेगा, # {} एक चर की तलाश करता है, इसलिए इस मामले में यह जॉन चर को मुद्रित करेगा, न कि स्ट्रिंग "जॉन" को। दूसरा वाला सही लग रहा है।
जेसन नोबल

11
आपको हमेशा दोहरे उद्धरण चिह्नों का उपयोग करने के लिए सावधान रहना चाहिए क्योंकि '#{name1}'यह समान नहीं है "#{name1}"
दरोगाओं

3
स्ट्रिंग प्रक्षेप एकल उद्धरणों में काम नहीं करता है, आपको दोहरे उद्धरण चिह्नों का उपयोग करना चाहिए। उदाहरण के लिए: '#{"abc"}' # => "\#{\"abc\"}"लेकिन आप क्या चाहते हैं"#{"abc"}" # => "abc"
bschlueter 17

2
पहला तरीका एक समतुल्य नहीं है - मूल्य के रूप में टेम्पलेट को पास नहीं किया जा सकता है।
ओंद्रा Oižka

51

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

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

डॉक्स देखें


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

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

19

लगभग उसी तरह:

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

रूबी में, चौकोर कोष्ठक का अर्थ टुपल होता है? मुझे लगा कि चौकोर कोष्ठक सूचियाँ हैं ...
TIMEX

@TIMEX: यह सवाल मदद करेगा: stackoverflow.com/questions/525957/tuples-in-ruby
मनोज गोविंदन

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

9

असल में लगभग वही

s = "hello, %s. Where is %s?" % ["John","Mary"]
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.