রুবিতে একাধিক স্ট্রিং একসাথে জোড়া দেওয়া এমন একটি জিনিস যা আপনাকে প্রায়শই করতে হয়।
কিন্তু আপনি কীভাবে সেটি করবেন?
ভালো…
দুটি পথ রয়েছে:
- রুবি স্ট্রিং কনক্যাটেনেশন
- রুবি স্ট্রিং ইন্টারপোলেশন
কনক্যাটেনেশন এইরকম দেখে:
a = "Nice to meet you" b = ", " c = "do you like blueberries?" a + b + c # "Nice to meet you, do you like blueberries?"
আপনি একটি স্ট্রিংকে অন্য স্ট্রিংয়ের সাথে আপেন্ড করতে + অপারেটর ব্যবহার করতে পারেন।
এই কেসে, a + b + c, একটি নতুন স্ট্রিং তৈরি করে।
বতে, আপনাকে ভেরিয়েবল ব্যবহার করতে হয় না এটা কাজ করার জন্য।
উদাহরণ:
puts "I like" + " " + "chocolate" # I like chocolate
আরেক অপশন হলো += অপারেটর ব্যবহার করা।
উদাহরণ:
a = "" a += "test" a += "test" a += "test" a # "testtesttest"
আমরা একটি খালি স্ট্রিং দিয়ে শুরু করি এবং সেটিতে আপেন্ড করে একটি বড় স্ট্রিং বানাই।
কিন্তু এতে একটা সমস্যা রয়েছে…
এটি খুব স্লো!
সমাধান আসছে।
রুবি Concat মেথড উদাহরণ
আপনি রুবি concat মেথড ব্যবহার করে স্ট্রিংস দক্ষতার সাথে মার্জ করতে পারেন।
এভাবে:
str = ""
str.concat("a")
str.concat("a")
str # "aa"
এটি ফাস্টার কারণ এটি স্ট্রিং str-কে পরিবর্তন করে, একটি নতুন তৈরি করার বদলে।
কিন্তু এট += জতট সুন্দর নয়…
আর কোনো পথ আছে কি?
হ্যাঁ!
আপনি << মেথড ব্যবহার করতে পারেন, যা concat-র একটি অ্যালিয়াস।
নোট: রুবি ২.৪ থেকে শুরু করে একটি ছোট পার্থক্য রয়েছে,
concat-এ আপনি একাধিক আর্গুমেন্ট পাস করতে পারেন,<<-এ আপনি একবারে শুধু একটি পাস করতে পারেন।
উদাহরণ:
str = "" str << "a" str << "a"
আপনি এটিও করতে পারেন:
str = "" str << "a" << "a"
এখন একটা সমস্যা বাকি।
আপনি যদি একটি স্ট্রিংকে ভেরিয়েবলসহ কম্বাইন করতে চান, কিন্তু ভেরিয়েবলগুলোর একটি স্ট্রিং নয়, তবে আপনি অনাকাঙ্ক্ষিত ফলাফল পাবেন।
দेखুন:
"" + 1 # TypeError: no implicit conversion of Fixnum into String "" << 1 # "\x01"
সমাধান কী?
to_s মেথড ব্যবহার করে সব নতুন অবজেক্টকে স্ট্রিংএ কনভার্ট করুন।
এভাবে:
"" + 1.to_s
বিশেষ, এটি দ্রুত বদশুরু হয়ে যায়, তাই আমাদের আরেকটি টুল রয়েছে যা আপনি ব্যবহার করতে পারেন।
রুবি স্ট্রিং ইন্টারপোলেশন কীভাবে ব্যবহার করবেন
ইন্টারপোলেশন বা ভেরিয়েবলকে স্ট্রিংএ মার্জ করা একটি শক্তিশালী টেকনিক।
এটি আপনাকে একটি স্ট্রিংকে "টেমপ্লেটাইজ" করতে দেয়।
এখানে একটি উদাহরণ:
age = 33
name = "Jesus"
"Hello, my name is #{name} & I'm #{age} years old."
আমরা যেকোনো name এবং age প্লাগ ইন করতে পারি সেগুলো স্ট্রিং এর আগে ভেরিয়েবল হিসেবে সেট করে।
সবচেয়ে ভালো অংশ?
রুবি এই ভ্যালুগুলো স্ট্রিংএ কনভার্ট করার যত্ন নেয়।
তাই আপনাকে to_s কল করতে হবে না!
খুব ভালো।
স্ট্রিং প্রিপেন্ডিং (Prepending Strings)
স্ট্রিং একসাথে কম্বাইন করার আরেকটি পথ রয়েছে।
"স্ট্রিং ইন্টারপোলেশন" দিয়ে ভেরিয়েবল এবং ছোট স্ট্রিংগুলোকে কিছু নতুনতে কম্বাইন করার বদলে।
অথবা << এবং concat দিয়ে এন্ডে আপেন্ড করার বদলে।
আপনি prepend ও করতে পারেন!
উদাহরণ:
str = ""
str.prepend("1")
str.prepend("2")
str.prepend("3")
# "321"
আপনি যদি চিনতে থাকেন একটি append মেথড রয়েছে, তাহলে নেই।
শুধু অ্যারে এর জন্য রয়েছে।
সারসংক্ষেপ
আপনি রুবিতে স্ট্রিং কনক্যাটেনেশন, আপেন্ডিং, প্রিপেন্ডিং এবং ইন্টারপোলেশন সম্পর্কে শিখেছেন, এগুলো আপনাকে একাধিক স্ট্রিং একসাথে কম্বাইন করতে দেয়।
এই আর্টিকেলটি উপকারী লাগলে শেয়ার করুন 🙂
পড়ার জন্য ধন্যবাদ।