পাইথনের `s =" হ্যালো,% s এর সমপরিমাণ রুবি কি? % S কোথায়? " % ("জন", "মেরি") `


141

পাইথনে, স্ট্রিং ফর্ম্যাট করার জন্য এই প্রতিমাটি বেশ সাধারণ

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

রুবির সমতুল্য কি?


3
এখানে কোনও স্ট্রিং কনটেনটেশন নেই, কেবল স্ট্রিং ফর্ম্যাটিং। এবং গুগল এরও দ্রুত উত্তর দেবে এমনকি এমনকি যে কখনও পারে না ... আপনি রুবিতে ঠিক একই কাজ করতে পারেন তা জানতে আমার প্রায় 20 সেকেন্ড সময় লেগেছে।

আপনি বিন্যাস / প্রতিস্থাপনের জন্য জিজ্ঞাসা করছেন না আপনার আপনার প্রশ্ন পরিবর্তন করা উচিত। যাইহোক, রুবিতে, + বা << অপারেটরগুলির সাথে একযোগে কাজ করা হয়।
ডেভিড

উত্তর:


246

সবচেয়ে সহজ উপায় স্ট্রিং ইন্টারপোলেশন । আপনি রুবি কোডের সামান্য টুকরোটি সরাসরি আপনার স্ট্রিংগুলিতে ইনজেক্ট করতে পারেন।

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

আপনি রুবিতে ফর্ম্যাট স্ট্রিংও করতে পারেন।

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

সেখানে স্কোয়ার বন্ধনী ব্যবহার করতে ভুলবেন না। রুবির টিউপলস নেই, কেবল অ্যারে রয়েছে এবং যারা স্কোয়ার বন্ধনী ব্যবহার করে।


1
আমি অবশ্যই প্রথমটি ব্যবহার করব, এটি আমার কাছে আরও পঠনযোগ্য বলে মনে হচ্ছে
ডেভিড

1
প্রথমটি কাজ করবে না, # {a একটি পরিবর্তনশীল সন্ধান করবে, সুতরাং এই ক্ষেত্রে এটি জন ভেরিয়েবল মুদ্রণ করবে, "জন" স্ট্রিংটি নয়। দ্বিতীয়টি সঠিক দেখাচ্ছে।
জেসন নোবেল

11
এছাড়াও আপনি সতর্কতা অবলম্বন করা উচিত সবসময় ডবল কোট ব্যবহার যেমন '#{name1}'হিসাবে একই নয় "#{name1}"
Droogans

3
স্ট্রিং ইন্টারপোলেশন একক উদ্ধৃতিতে কাজ করে না, আপনাকে অবশ্যই ডাবল উদ্ধৃতি ব্যবহার করতে হবে। উদাহরণস্বরূপ: '#{"abc"}' # => "\#{\"abc\"}"তবে আপনি যা চান তা হ'ল"#{"abc"}" # => "abc"
bschlueter

2
প্রথম উপায় সমতুল্য নয় - টেমপ্লেটটি একটি মান হিসাবে প্রায় পাশ করা যায় না।
ওন্দ্র Žižka

51

রুবিতে> 1.9 এ আপনি এটি করতে পারেন:

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

দস্তাবেজগুলি দেখুন


আমি সেখানে ইডোম্যাটিক রুবির সমতুল্য সম্পাদনা করেছি - তবে এখন আমি লক্ষ্য করেছি যে গৃহীত উত্তরটি ইতিমধ্যে তা করেছে - আবার 'সম্পাদনা' মুছে ফেলা হয়েছে: - /
টুং

স্ট্রিং% অপারেটর সহ একটি হ্যাশ ব্যবহার করার সময়, যদি বিন্যাসের স্ট্রিংয়ে উল্লেখ করা কী প্রতীক উপস্থিত না থাকে তবে আপনি একটি কীআরর পাবেন।
ব্যবহারকারী 1164178

19

প্রায় একইভাবে:

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

রুবিতে, বর্গাকার বন্ধনীগুলির অর্থ কি একটি টুপল? আমি ভেবেছিলাম বর্গাকার বন্ধনীগুলি তালিকা ...
টিমেক্স

@TIMEX: এই প্রশ্নের সহায়তা করবে: stackoverflow.com/questions/525957/tuples-in-ruby
মনোজ গোবিন্দন

3
রুবির টিপলস নেই (অন্তত ভাষায় জাল নয়)। হ্যাঁ, এটি একটি অ্যারে (পাইথনের "তালিকা" কে সত্যই অ্যারে বলা উচিত ...)।

9

আসলে প্রায় একই

s = "hello, %s. Where is %s?" % ["John","Mary"]
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.