স্ট্রিং (String) হলো রুবির একটি গুরুত্বপূর্ণ ডেটা টাইপ যা অক্ষরের একটি সিকোয়েন্স ধারণ করে। স্ট্রিং দিয়ে আমরা টেক্সট সংরক্ষণ, প্রসেস এবং ম্যানিপুলেট করতে পারি। রুবি স্ট্রিং ম্যানিপুলেশনের জন্য অনেক শক্তিশালী মেথড প্রদান করে, যা টেক্সটের সাথে কাজ করা আরও সহজ এবং দ্রুত করে তোলে।
এখানে আমরা স্ট্রিং এবং স্ট্রিং ম্যানিপুলেশন সম্পর্কিত বিভিন্ন টপিক নিয়ে আলোচনা করব।
১. স্ট্রিং ডিফাইন করা (Defining a String)
রুবিতে স্ট্রিং দুইভাবে ডিফাইন করা যায়:
- ডাবল কোটস (""): স্ট্রিং ভ্যালু ইন্টারপোলেট করতে পারবেন।
- সিঙ্গেল কোটস (''): স্ট্রিং ভ্যালু ইন্টারপোলেট করা যাবে না।
উদাহরণ:
# Double quotes - String interpolation possible
greeting = "Hello, World!"
name = "আজিজ"
puts "#{greeting} My name is #{name}"
# Single quotes - String interpolation not possible
greeting_single = 'Hello, World!'
puts "#{greeting_single} My name is #{name}" # This won't interpolate the `name`এখানে, ডাবল কোটসের মধ্যে আপনি স্ট্রিং ইন্টারপোলেশন করতে পারবেন (যেমন #{name}), কিন্তু সিঙ্গেল কোটসের মধ্যে এটি কাজ করবে না।
২. স্ট্রিংয়ের দৈর্ঘ্য (String Length)
স্ট্রিংয়ের দৈর্ঘ্য জানার জন্য .length মেথড ব্যবহার করা হয়।
str = "Hello, Ruby!"
puts str.length # Output: 13এখানে length মেথড স্ট্রিংয়ের মোট অক্ষরের সংখ্যা প্রদান করে।
৩. স্ট্রিং ইন্টারপোলেশন (String Interpolation)
স্ট্রিং ইন্টারপোলেশন রুবির একটি শক্তিশালী ফিচার, যার মাধ্যমে আপনি স্ট্রিংয়ের মধ্যে ভেরিয়েবল বা এক্সপ্রেশন ব্যবহার করতে পারেন।
name = "আজিজ"
age = 25
puts "My name is #{name} and I am #{age} years old."এখানে #{} ব্যবহার করে স্ট্রিংয়ের মধ্যে ভেরিয়েবলগুলির মান অন্তর্ভুক্ত করা হয়েছে।
৪. স্ট্রিং ম্যানিপুলেশন (String Manipulation)
রুবি স্ট্রিং ম্যানিপুলেশনের জন্য অনেক মেথড প্রদান করে। নিচে কিছু প্রধান স্ট্রিং ম্যানিপুলেশন মেথডের উদাহরণ দেওয়া হলো:
১. অক্ষর যোগ করা (Concatenation)
স্ট্রিং যোগ করতে + বা << অপারেটর ব্যবহার করা হয়।
str1 = "Hello"
str2 = " World"
puts str1 + str2 # Output: Hello World
# Using <<
str1 << str2
puts str1 # Output: Hello World২. স্ট্রিং বিভাজন (String Splitting)
split মেথড ব্যবহার করে স্ট্রিংকে নির্দিষ্ট সেপারেটর দিয়ে বিভাজিত করা যায়।
str = "Hello, Ruby, World"
words = str.split(", ")
puts words # Output: ["Hello", "Ruby", "World"]এখানে, split মেথড স্ট্রিংকে কমা ও স্পেস দ্বারা বিভক্ত করেছে।
৩. স্ট্রিং কাটা (Substrings)
[] অপারেটর বা .slice মেথড ব্যবহার করে স্ট্রিংয়ের একটি নির্দিষ্ট অংশ (substring) পাওয়া যায়।
str = "Hello, Ruby!"
puts str[0, 5] # Output: Hello
puts str.slice(7, 4) # Output: Rubyএখানে, str[0, 5] স্ট্রিংয়ের প্রথম ৫টি অক্ষর ফেরত দেবে, এবং slice মেথড দিয়ে নির্দিষ্ট অংশ এক্সট্র্যাক্ট করা হয়েছে।
৪. স্ট্রিং পরিবর্তন (Replacing Strings)
gsub বা sub মেথড ব্যবহার করে স্ট্রিংয়ের অংশ পরিবর্তন করা যায়।
str = "Hello, Ruby!"
new_str = str.gsub("Ruby", "World")
puts new_str # Output: Hello, World!এখানে, gsub মেথড "Ruby" শব্দটি "World" দিয়ে প্রতিস্থাপন করেছে।
৫. স্ট্রিং পুঁজি করা (Trimming Strings)
strip, lstrip, এবং rstrip মেথড ব্যবহার করে স্ট্রিংয়ের শুরু এবং শেষ থেকে অতিরিক্ত স্পেস (whitespace) সরানো যায়।
str = " Hello, Ruby! "
puts str.strip # Output: Hello, Ruby!এখানে, strip মেথড স্ট্রিংয়ের শুরু এবং শেষের স্পেস সরিয়ে ফেলেছে।
৫. স্ট্রিং মেচিং (String Matching)
রুবি স্ট্রিং মেচিংয়ের জন্য রেগুলার এক্সপ্রেশন (Regex) ব্যবহার করে, যেগুলি স্ট্রিংয়ের মধ্যে নির্দিষ্ট প্যাটার্ন খুঁজে বের করতে সাহায্য করে।
str = "Hello, Ruby!"
if str =~ /Ruby/
puts "Found Ruby!"
else
puts "Ruby not found!"
endএখানে, =~ অপারেটর রেগুলার এক্সপ্রেশন ব্যবহার করে স্ট্রিংয়ের মধ্যে "Ruby" শব্দটি খুঁজে বের করে।
৬. স্ট্রিং রিভার্স (Reversing a String)
স্ট্রিংয়ের অক্ষরের সিকোয়েন্স রিভার্স (reverse) করতে .reverse মেথড ব্যবহার করা হয়।
str = "Hello"
puts str.reverse # Output: olleHএখানে, reverse মেথড স্ট্রিংটির অক্ষরের ক্রম উল্টে দেয়।
৭. স্ট্রিং ক্যাপিটালাইজ (Capitalizing a String)
capitalize, upcase, downcase মেথড ব্যবহার করে স্ট্রিংয়ের অক্ষরের কেস পরিবর্তন করা যায়।
str = "hello"
puts str.capitalize # Output: Hello
str2 = "HELLO"
puts str2.downcase # Output: hello
puts str2.upcase # Output: HELLOএখানে, capitalize প্রথম অক্ষরকে বড় অক্ষরে পরিবর্তন করেছে, এবং upcase, downcase পুরো স্ট্রিংয়ের কেস পরিবর্তন করেছে।
৮. স্ট্রিং কম্পারিজন (String Comparison)
স্ট্রিংগুলি তুলনা করতে ==, !=, <, >, <=, >= অপারেটর ব্যবহার করা যায়।
str1 = "Hello"
str2 = "Hello"
str3 = "Ruby"
puts str1 == str2 # Output: true
puts str1 != str3 # Output: true
puts str1 < str3 # Output: trueএখানে, == এবং != স্ট্রিংগুলির সমতা বা অসামান্যতা পরীক্ষা করে, এবং অন্যান্য অপারেটর স্ট্রিংগুলির তুলনা করে।
সারসংক্ষেপ
রুবিতে স্ট্রিং এবং স্ট্রিং ম্যানিপুলেশন অত্যন্ত গুরুত্বপূর্ণ এবং শক্তিশালী ধারণা। স্ট্রিংয়ের মাধ্যমে টেক্সট ডেটা ধারণ, প্রক্রিয়াকরণ এবং পরিবর্তন করা যায়, এবং রুবি বিভিন্ন মেথড সরবরাহ করে যা স্ট্রিংয়ের সাথে কাজ করতে সহায়ক। স্ট্রিং ম্যানিপুলেশন মেথডগুলো যেমন যোগ করা, বিভাজন, কাটা, পরিবর্তন, তুলনা এবং অন্যান্য কার্যাবলী রুবির প্রোগ্রামিংকে আরও সহজ এবং দক্ষ করে তোলে।
রুবি একটি ডাইনামিক প্রোগ্রামিং ভাষা, যেখানে Strings অত্যন্ত গুরুত্বপূর্ণ ডেটা টাইপ। স্ট্রিংগুলি সাধারণত টেক্সট বা চরিত্রের সিকোয়েন্স হিসেবে ব্যবহৃত হয়। রুবি স্ট্রিং অত্যন্ত শক্তিশালী এবং এর বিভিন্ন ম্যানিপুলেশন করার জন্য অনেক ধরনের মেথড সরবরাহ করে। এখানে Strings এর মৌলিক ধারণা, ডিক্লারেশন, এবং ম্যানিপুলেশন টেকনিকগুলি আলোচনা করা হলো।
Strings এর মৌলিক ধারণা
রুবিতে String হল চরিত্রের একটি সিকোয়েন্স (অথবা টেক্সট) এবং এটি সাধারণত ডাবল কোট "" অথবা সিঙ্গল কোট '' দিয়ে ঘেরা থাকে। রুবির স্ট্রিং মিউটেবল (mutable) অর্থাৎ, এর মান পরিবর্তনযোগ্য।
String ডিক্লারেশন:
string1 = "Hello, World!" # ডাবল কোট দিয়ে স্ট্রিং ডিক্লেয়ার
string2 = 'Ruby Programming' # সিঙ্গল কোট দিয়ে স্ট্রিং ডিক্লেয়ার- ডাবল কোট (
""): ডাবল কোটের স্ট্রিংয়ে ইন্টারপোলেশন এবং বিশেষ ক্যারেক্টার যেমন\n(নিউ লাইন) বা\t(ট্যাব) কাজ করে। - সিঙ্গল কোট (
''): সিঙ্গল কোটে স্ট্রিংে ইন্টারপোলেশন কাজ করে না, তবে সাধারণভাবে দ্রুত কোড লেখার জন্য ব্যবহৃত হয়।
Strings ম্যানিপুলেশন
রুবি স্ট্রিং ম্যানিপুলেশন করার জন্য অনেক ফিচার এবং মেথড সরবরাহ করে। এখানে কিছু সাধারণ স্ট্রিং ম্যানিপুলেশন টেকনিকস নিয়ে আলোচনা করা হলো।
১. String Length (স্ট্রিংয়ের দৈর্ঘ্য)
রুবিতে স্ট্রিংয়ের দৈর্ঘ্য বের করার জন্য .length মেথড ব্যবহার করা হয়।
str = "Hello"
puts str.length # আউটপুট: 5এখানে, "Hello" স্ট্রিংটির দৈর্ঘ্য ৫।
২. String Concatenation (স্ট্রিং একত্রিতকরণ)
স্ট্রিং একত্রিত করতে + অপারেটর বা .concat মেথড ব্যবহার করা হয়।
str1 = "Hello"
str2 = "World"
result = str1 + " " + str2 # স্ট্রিং কনক্যাটিনেশন
puts result # আউটপুট: "Hello World"অথবা:
str1 = "Hello"
str1.concat(" World")
puts str1 # আউটপুট: "Hello World"৩. String Interpolation (স্ট্রিং ইন্টারপোলেশন)
স্ট্রিং ইন্টারপোলেশন একটি পদ্ধতি, যা রুবির ডাবল কোটের স্ট্রিংে ভেরিয়েবল বা এক্সপ্রেশন সরাসরি অন্তর্ভুক্ত করতে ব্যবহার করা হয়।
name = "আজিজ"
greeting = "Hello, #{name}!"
puts greeting # আউটপুট: "Hello, আজিজ!"এখানে, #{name} স্ট্রিংয়ের মধ্যে ভেরিয়েবল name এর মানকে ইন্টারপোলেট (অর্থাৎ সংযুক্ত) করে।
৪. String Substring (স্ট্রিং সাবস্ট্রিং)
রুবিতে একটি স্ট্রিং থেকে সাবস্ট্রিং বের করতে [start_index, length] পদ্ধতি ব্যবহার করা হয়।
str = "Hello, World!"
substring = str[0, 5]
puts substring # আউটপুট: "Hello"এখানে, "Hello, World!" স্ট্রিং থেকে ০ ইনডেক্স থেকে ৫টি ক্যারেক্টার কেটে আনা হয়েছে।
৫. String Case Manipulation (স্ট্রিং কেস ম্যানিপুলেশন)
রুবি স্ট্রিংগুলির কেস পরিবর্তন করতে .upcase, .downcase, .capitalize মেথড ব্যবহার করা হয়।
str = "hello"
puts str.upcase # আউটপুট: "HELLO"
puts str.downcase # আউটপুট: "hello"
puts str.capitalize # আউটপুট: "Hello".upcase: স্ট্রিংয়ের সব ক্যারেক্টারকে বড় অক্ষরে রূপান্তরিত করে।.downcase: সব ক্যারেক্টারকে ছোট অক্ষরে রূপান্তরিত করে।.capitalize: প্রথম ক্যারেক্টারকে বড় অক্ষরে এবং বাকি ক্যারেক্টারগুলোকে ছোট অক্ষরে রূপান্তরিত করে।
৬. String Replace (স্ট্রিং রিপ্লেস)
স্ট্রিংয়ের নির্দিষ্ট অংশ পরিবর্তন করতে .sub বা .gsub মেথড ব্যবহার করা হয়। .sub একটুকু প্রতিস্থাপন করে এবং .gsub সব প্রতিস্থাপন করে।
str = "Hello, World!"
new_str = str.sub("World", "Ruby")
puts new_str # আউটপুট: "Hello, Ruby!"
# সব occurrence প্রতিস্থাপন
str = "apple apple apple"
new_str = str.gsub("apple", "orange")
puts new_str # আউটপুট: "orange orange orange"৭. String Splitting (স্ট্রিং স্প্লিটিং)
একটি স্ট্রিংকে নির্দিষ্ট ডেলিমিটার (যেমন স্পেস বা কমা) দিয়ে ভাগ করতে .split মেথড ব্যবহার করা হয়।
str = "apple,banana,cherry"
arr = str.split(",")
puts arr.inspect # আউটপুট: ["apple", "banana", "cherry"]এখানে, স্ট্রিংটি কমা দিয়ে ভাগ করা হয়েছে এবং একটি অ্যারে তৈরি হয়েছে।
৮. String Strip (স্ট্রিং স্ট্রিপ)
স্ট্রিংয়ের শুরু এবং শেষে থাকা অপ্রয়োজনীয় স্পেস বা সাদা জায়গা মুছে ফেলতে .strip মেথড ব্যবহার করা হয়।
str = " Hello, World! "
puts str.strip # আউটপুট: "Hello, World!"এখানে, strip মেথড স্ট্রিংয়ের শুরু এবং শেষে থাকা অতিরিক্ত স্পেস মুছে ফেলেছে।
Strings ম্যানিপুলেশনের অন্যান্য মেথড
.reverse: স্ট্রিংটি উল্টো করে।str = "hello" puts str.reverse # আউটপুট: "olleh".include?: একটি স্ট্রিংয়ের মধ্যে অন্য স্ট্রিং বা ক্যারেক্টারটি আছে কিনা পরীক্ষা করে।str = "hello world" puts str.include?("world") # আউটপুট: true.start_with?এবং.end_with?: স্ট্রিংটি নির্দিষ্ট স্ট্রিং দিয়ে শুরু বা শেষ হচ্ছে কিনা তা চেক করে।str = "hello world" puts str.start_with?("hello") # আউটপুট: true puts str.end_with?("world") # আউটপুট: true
সারসংক্ষেপ
- Strings হল টেক্সট বা চরিত্রের সিকোয়েন্স, যা রুবিতে ডাবল বা সিঙ্গল কোট দিয়ে ডিফাইন করা হয়।
- রুবি স্ট্রিং ম্যানিপুলেশনের জন্য বিভিন্ন মেথড সরবরাহ করে, যেমন
.upcase,.downcase,.capitalize,.sub,.gsub,.splitইত্যাদি। - স্ট্রিং ইন্টারপোলেশন, কেস ম্যানিপুলেশন, রিপ্লেসমেন্ট, এবং স্লাইসিং সহ অনেক কার্যকরী অপারেশন করা সম্ভব।
রুবি প্রোগ্রামিং ভাষায় String Interpolation এবং String Concatenation দুটি পদ্ধতি রয়েছে যা স্ট্রিংয়ের মধ্যে বিভিন্ন মান বা ভেরিয়েবল যোগ করার জন্য ব্যবহৃত হয়। এই দুটি পদ্ধতির মধ্যে পার্থক্য এবং প্রতিটির ব্যবহার কীভাবে করা যায়, তা নিচে বিস্তারিতভাবে আলোচনা করা হলো।
১. String Interpolation
String Interpolation হল এমন একটি পদ্ধতি যার মাধ্যমে আপনি স্ট্রিংয়ের মধ্যে ভেরিয়েবল বা এক্সপ্রেশন সরাসরি ইনসার্ট (insert) করতে পারেন। এটি #{} সন্নিবেশ চিহ্নের মাধ্যমে করা হয়। রুবিতে স্ট্রিং ইন্টারপোলেশন খুবই সহজ এবং পঠনযোগ্য।
১.১ String Interpolation এর ব্যবহার
name = "আজিজ"
greeting = "Hello, #{name}!"
puts greeting # আউটপুট: Hello, আজিজ!এখানে, "#{name}" ইন্টারপোলেশন ব্যবহার করে name ভেরিয়েবলের মান "আজিজ" সরাসরি স্ট্রিংয়ের মধ্যে যুক্ত করা হয়েছে।
১.২ অন্য এক্সপ্রেশন ব্যবহার করা
স্ট্রিং ইন্টারপোলেশনে শুধু ভেরিয়েবলই নয়, যে কোনো এক্সপ্রেশনও ব্যবহার করা যেতে পারে। যেমন, গাণিতিক অপারেশন বা মেথড কল।
a = 5
b = 10
result = "The sum of #{a} and #{b} is #{a + b}."
puts result # আউটপুট: The sum of 5 and 10 is 15.এখানে, #{a + b} এই গাণিতিক এক্সপ্রেশনটি স্ট্রিংয়ের মধ্যে ইন্টারপোলেট করা হয়েছে।
১.৩ String Interpolation এর সুবিধা
- স্ট্রিংয়ের মধ্যে ভেরিয়েবল যোগ করা সহজ এবং পরিষ্কার।
- একাধিক ভেরিয়েবল একসাথে যোগ করা সহজ।
২. String Concatenation
String Concatenation হল দুটি বা তার বেশি স্ট্রিং একত্রে যুক্ত করার পদ্ধতি। রুবিতে স্ট্রিং কনক্যাটেনেশনের জন্য + অপারেটর বা << শোভেল অপারেটর ব্যবহৃত হয়। এটি স্ট্রিংয়ের মধ্যে নতুন মান যোগ করতে ব্যবহৃত হয়।
২.১ + অপারেটর দিয়ে String Concatenation
first_name = "আজিজ"
last_name = " রহমান"
full_name = first_name + last_name
puts full_name # আউটপুট: আজিজ রহমানএখানে, first_name এবং last_name স্ট্রিংগুলিকে + অপারেটর ব্যবহার করে যুক্ত করা হয়েছে।
২.২ << শোভেল অপারেটর দিয়ে String Concatenation
<< অপারেটরটি একটি স্ট্রিংয়ের শেষে অন্য স্ট্রিং যুক্ত করার জন্য ব্যবহৃত হয় এবং এটি সাধারণত দ্রুততম কনক্যাটেনেশন পদ্ধতি হিসেবে পরিচিত।
first_name = "আজিজ"
last_name = " রহমান"
first_name << last_name
puts first_name # আউটপুট: আজিজ রহমানএখানে, << অপারেটর ব্যবহার করে first_name স্ট্রিংয়ের শেষে last_name যুক্ত করা হয়েছে।
২.৩ String Concatenation এর সীমাবদ্ধতা
- কনক্যাটেনেশন প্রক্রিয়া কিছুটা কমপ্লেক্স হতে পারে যদি অনেক ভেরিয়েবল একত্রিত করতে হয়।
- এটি বড় প্রোজেক্টে কোডের পাঠযোগ্যতা কমাতে পারে, বিশেষ করে যখন একাধিক স্ট্রিং এবং ভেরিয়েবল যুক্ত করতে হয়।
৩. String Interpolation এবং Concatenation এর মধ্যে পার্থক্য
| বৈশিষ্ট্য | String Interpolation | String Concatenation |
|---|---|---|
| সংক্ষেপ | স্ট্রিংয়ের মধ্যে ভেরিয়েবল সরাসরি যোগ করা হয় #{} দিয়ে। | স্ট্রিংগুলিকে + অথবা << দিয়ে যুক্ত করা হয়। |
| পঠনযোগ্যতা | সহজ এবং পরিষ্কার। | কিছুটা জটিল হতে পারে বিশেষত অনেক স্ট্রিং যুক্ত করার সময়। |
| পারফরম্যান্স | সাধারণত দ্রুত এবং কোড কমপ্লেক্সিটি কম থাকে। | অনেক স্ট্রিং কনক্যাটেনেট করলে পারফরম্যান্স কম হতে পারে। |
| ব্যবহার | ডাইনামিকভাবে মান যুক্ত করতে সুবিধাজনক, বিশেষত এক্সপ্রেশন এবং ভেরিয়েবল একত্রিত করার জন্য। | একাধিক স্ট্রিং যুক্ত করার জন্য ব্যবহৃত হয়। |
৪. String Interpolation এবং Concatenation এর ব্যবহার এর উদাহরণ
উদাহরণ ১: String Interpolation
name = "আজিজ"
age = 25
puts "My name is #{name} and I am #{age} years old."
# আউটপুট: My name is আজিজ and I am 25 years old.উদাহরণ ২: String Concatenation
name = "আজিজ"
age = 25
puts "My name is " + name + " and I am " + age.to_s + " years old."
# আউটপুট: My name is আজিজ and I am 25 years old.এখানে, স্ট্রিং কনক্যাটেনেশনে age.to_s ব্যবহার করা হয়েছে কারণ age একটি ইন্টিজার, এবং স্ট্রিংয়ের সাথে যোগ করার জন্য এটিকে স্ট্রিং এ রূপান্তর করতে হবে।
সারসংক্ষেপ
- String Interpolation স্ট্রিংয়ের মধ্যে ভেরিয়েবল বা এক্সপ্রেশন যোগ করার একটি সহজ এবং পরিষ্কার পদ্ধতি। এটি পঠনযোগ্য এবং কোড লেখার সময় দ্রুত কাজ করে।
- String Concatenation স্ট্রিং যোগ করার একটি প্রচলিত পদ্ধতি, তবে এটি অনেক স্ট্রিং যুক্ত করতে কিছুটা জটিল এবং কম কার্যকরী হতে পারে।
- স্ট্রিং ইন্টারপোলেশন ব্যবহারে কোডের পরিষ্কারতা এবং কর্মদক্ষতা বাড়ে, তবে কনক্যাটেনেশন কিছু ক্ষেত্রে উপকারী হতে পারে।
রুবি প্রোগ্রামিং ভাষায় String ডেটা টাইপের জন্য অনেক শক্তিশালী মেথড রয়েছে, যা স্ট্রিং ম্যানিপুলেশন (যেমন টেক্সট বিভাজন, স্ট্রিং পরিষ্কারকরণ, এবং স্ট্রিং সংযোজন) সহজ করে তোলে। এখানে কিছু গুরুত্বপূর্ণ স্ট্রিং মেথড আলোচনা করা হলো, যেমন split, chomp, strip, এবং অন্যান্য।
১. split Method
split মেথড একটি স্ট্রিংকে বিভক্ত করে এবং একটি অ্যারে রিটার্ন করে। আপনি যেকোনো ডেলিমিটার (যেমন, স্পেস, কমা, বা অন্য কোনো চরিত্র) ব্যবহার করে স্ট্রিংটিকে বিভক্ত করতে পারেন।
Syntax:
string.split(delimiter)delimiter: বিভাজক চিহ্ন (যেমন একটি স্পেস, কমা, বা অন্য কোনো অক্ষর)।- যদি কোন delimiter না দেওয়া হয়, তবে এটি ডিফল্টভাবে স্পেস দিয়ে স্ট্রিং বিভক্ত করবে।
উদাহরণ:
sentence = "I love Ruby programming"
words = sentence.split(" ") # স্পেস দিয়ে বিভক্ত হচ্ছে
puts words.inspectআউটপুট:
["I", "love", "Ruby", "programming"]এখানে, split(" ") মেথড স্ট্রিংটিকে স্পেস দিয়ে বিভক্ত করেছে এবং একটি অ্যারে তৈরি করেছে।
ডিফল্ট ব্যবহার:
sentence = "apple,banana,grape"
fruits = sentence.split(",") # কমা দিয়ে বিভক্ত
puts fruits.inspectআউটপুট:
["apple", "banana", "grape"]২. chomp Method
chomp মেথড স্ট্রিং থেকে লাইন শেষের newline character (\n) অথবা carriage return (\r) মুছে ফেলতে ব্যবহৃত হয়। এটি বিশেষ করে ইনপুট বা ফাইল থেকে ডেটা পড়ার সময় নতুন লাইনের শেষে থাকা অপ্রয়োজনীয় newline চিহ্ন মুছে ফেলার জন্য ব্যবহৃত হয়।
Syntax:
string.chompউদাহরণ:
text = "Hello, World!\n"
puts text.chomp # আউটপুট: Hello, World!এখানে, \n (newline character) শেষের অংশটি মুছে ফেলা হয়েছে এবং শুধুমাত্র "Hello, World!" প্রদর্শিত হয়েছে।
৩. strip Method
strip মেথড একটি স্ট্রিংয়ের শুরু এবং শেষের সমস্ত সাদা জায়গা (whitespace) মুছে ফেলে। এটি স্ট্রিংয়ের মধ্যে কোনও অতিরিক্ত স্পেস বা ট্যাব চিহ্নগুলিও মুছে ফেলে।
Syntax:
string.stripউদাহরণ:
text = " Hello, Ruby! "
puts text.strip # আউটপুট: Hello, Ruby!এখানে, স্ট্রিংয়ের শুরু এবং শেষের অতিরিক্ত স্পেস মুছে ফেলা হয়েছে, এবং "Hello, Ruby!" আউটপুট হয়েছে।
৪. upcase Method
upcase মেথড স্ট্রিংয়ের সমস্ত অক্ষরকে বড় হাতের অক্ষরে রূপান্তর করে।
Syntax:
string.upcaseউদাহরণ:
text = "hello"
puts text.upcase # আউটপুট: HELLOএখানে, "hello" স্ট্রিংটি "HELLO" তে রূপান্তরিত হয়েছে।
৫. downcase Method
downcase মেথড স্ট্রিংয়ের সমস্ত অক্ষরকে ছোট হাতের অক্ষরে রূপান্তর করে।
Syntax:
string.downcaseউদাহরণ:
text = "HELLO"
puts text.downcase # আউটপুট: helloএখানে, "HELLO" স্ট্রিংটি "hello" তে রূপান্তরিত হয়েছে।
৬. capitalize Method
capitalize মেথড স্ট্রিংয়ের প্রথম অক্ষরকে বড় হাতের অক্ষরে এবং বাকি অক্ষরগুলোকে ছোট হাতের অক্ষরে রূপান্তর করে।
Syntax:
string.capitalizeউদাহরণ:
text = "hello"
puts text.capitalize # আউটপুট: Helloএখানে, "hello" স্ট্রিংটি "Hello" তে রূপান্তরিত হয়েছে।
৭. reverse Method
reverse মেথড স্ট্রিংয়ের চরিত্রগুলো উল্টে দেয়, অর্থাৎ স্ট্রিংটি রিভার্স করে।
Syntax:
string.reverseউদাহরণ:
text = "hello"
puts text.reverse # আউটপুট: ollehএখানে, "hello" স্ট্রিংটি "olleh" তে রূপান্তরিত হয়েছে।
৮. include? Method
include? মেথডটি চেক করে যে একটি স্ট্রিং অন্য একটি স্ট্রিং বা সাবস্ট্রিং অন্তর্ভুক্ত কিনা।
Syntax:
string.include?(substring)উদাহরণ:
text = "hello world"
puts text.include?("world") # Output: true
puts text.include?("ruby") # Output: falseএখানে, "world" স্ট্রিংটি "hello world" স্ট্রিংয়ের মধ্যে রয়েছে, তাই প্রথম puts কমান্ড true আউটপুট করবে।
৯. gsub Method
gsub মেথডটি একটি স্ট্রিং থেকে সাবস্ট্রিং প্রতিস্থাপন করে। এটি সাধারনত কিছু টেক্সট বা প্যাটার্নের পরিবর্তন করতে ব্যবহৃত হয়।
Syntax:
string.gsub(pattern, replacement)উদাহরণ:
text = "hello world"
new_text = text.gsub("world", "Ruby")
puts new_text # Output: hello Rubyএখানে, "world" কে "Ruby" দ্বারা প্রতিস্থাপন করা হয়েছে।
১০. concat Method
concat মেথড দুটি স্ট্রিং একত্রিত করার জন্য ব্যবহৃত হয়।
Syntax:
string.concat(other_string)উদাহরণ:
text = "Hello"
text.concat(", Ruby!")
puts text # Output: Hello, Ruby!এখানে, "Hello" এবং ", Ruby!" দুটি স্ট্রিং একত্রিত করা হয়েছে।
সারসংক্ষেপ
split: একটি স্ট্রিংকে নির্দিষ্ট ডেলিমিটার দ্বারা বিভক্ত করে একটি অ্যারে রিটার্ন করে।chomp: স্ট্রিংয়ের শেষে থাকা\nবা\r(newline) চরিত্র মুছে ফেলে।strip: স্ট্রিংয়ের শুরু এবং শেষে থাকা সাদা জায়গা মুছে ফেলে।upcase: স্ট্রিংয়ের সমস্ত অক্ষরকে বড় হাতের অক্ষরে রূপান্তর করে।downcase: স্ট্রিংয়ের সমস্ত অক্ষরকে ছোট হাতের অক্ষরে রূপান্তর করে।capitalize: স্ট্রিংয়ের প্রথম অক্ষর বড় করে এবং বাকি অক্ষর ছোট করে।reverse: স্ট্রিংয়ের অক্ষরগুলোর অবস্থান উল্টে দেয়।include?: চেক করে যে একটি সাবস্ট্রিং স্ট্রিংয়ের মধ্যে আছে কি না।gsub: স্ট্রিংয়ে নির্দিষ্ট প্যাটার্নের পরিবর্তন করে।concat: দুটি স্ট্রিং একত্রিত করে।
এই মেথডগুলির মাধ্যমে আপনি স্ট্রিং ম্যানিপুলেশন করতে পারেন এবং রুবিতে আপনার কাজের কার্যকারিতা ও দক্ষতা বাড়াতে পারেন।
Regular Expressions (রেগুলার এক্সপ্রেশন বা Regex) রুবি প্রোগ্রামিং ভাষায় একটি শক্তিশালী টুল, যা বিশেষ করে টেক্সট ডেটা ম্যানিপুলেশন এবং ডেটা খোঁজার জন্য ব্যবহৃত হয়। Pattern Matching বা প্যাটার্ন ম্যাচিং হল একটি প্রক্রিয়া যা রেগুলার এক্সপ্রেশনের মাধ্যমে একটি নির্দিষ্ট প্যাটার্ন বা শর্ত অনুসারে টেক্সট খুঁজে বের করে। এটি রুবি সহ বিভিন্ন প্রোগ্রামিং ভাষায় ব্যবহৃত হয়।
১. Regular Expressions (Regex) এর ধারণা
Regex হল একটি বিশেষ ধরণের স্ট্রিং যা এক বা একাধিক চরিত্রের প্যাটার্ন উপস্থাপন করে। এটি টেক্সট ডেটার মধ্যে নির্দিষ্ট প্যাটার্ন খুঁজে বের করতে এবং সেই প্যাটার্নের ভিত্তিতে কাজ করতে ব্যবহৃত হয়।
রেগুলার এক্সপ্রেশন সাধারণত ওয়েব ডেভেলপমেন্ট, ডেটা সায়েন্স, ফাইল প্রসেসিং, এবং অন্যান্য টেক্সট-বেসড অপারেশনে ব্যবহৃত হয়।
২. Regex এর Syntax (বুনিয়াদি সিনট্যাক্স)
রেগুলার এক্সপ্রেশন টেক্সটের মধ্যে প্যাটার্ন খুঁজে বের করার জন্য নির্দিষ্ট সিনট্যাক্স বা প্যাটার্ন ব্যবহার করে। এখানে কিছু সাধারণ সিনট্যাক্স দেয়া হলো:
২.১ Character classes (ক্যারেক্টার ক্লাস)
.: যেকোনো একক চরিত্র।- উদাহরণ:
a.c-> এটিabc,adc,axcইত্যাদি মেলাবে।
- উদাহরণ:
[abc]:a,b, অথবাcএর মধ্যে যেকোনো একটি।- উদাহরণ:
[a-z]-> এটি যেকোনো একটি ছোট হাতের অক্ষর মেলাবে।
- উদাহরণ:
[^abc]:a,b, বাcছাড়া অন্য কিছু।- উদাহরণ:
[^0-9]-> এটি যেকোনো সংখ্যা ছাড়া অন্য কিছু মেলাবে।
- উদাহরণ:
২.২ Anchors (অ্যাঙ্কর)
^: লাইন বা স্ট্রিংয়ের শুরু।- উদাহরণ:
^abc-> এটি শুধুমাত্র এমন স্ট্রিং মেলাবে যাabcদিয়ে শুরু হয়।
- উদাহরণ:
$: লাইন বা স্ট্রিংয়ের শেষ।- উদাহরণ:
abc$-> এটি শুধুমাত্র এমন স্ট্রিং মেলাবে যাabcদিয়ে শেষ হয়।
- উদাহরণ:
২.৩ Quantifiers (কোয়ানটিফায়ার)
*: পূর্ববর্তী ক্যারেক্টারটি ০ বা তার বেশি বার হতে পারে।- উদাহরণ:
a*b-> এটিb,ab,aab,aaabইত্যাদি মেলাবে।
- উদাহরণ:
+: পূর্ববর্তী ক্যারেক্টারটি ১ বা তার বেশি বার হতে হবে।- উদাহরণ:
a+b-> এটিab,aab,aaabইত্যাদি মেলাবে কিন্তু শুধুbনয়।
- উদাহরণ:
?: পূর্ববর্তী ক্যারেক্টারটি ০ বা ১ বার হতে পারে।- উদাহরণ:
a?b-> এটিbবাabমেলাবে।
- উদাহরণ:
২.৪ Groups and Alternation (গ্রুপিং এবং বিকল্প)
(): গ্রুপিং (Sub-expression) তৈরি করতে ব্যবহৃত হয়।- উদাহরণ:
(abc)+-> এটি একটি বা একাধিকabcমেলাবে।
- উদাহরণ:
|: বিকল্প (OR) পছন্দ।- উদাহরণ:
abc|def-> এটিabcঅথবাdefমেলাবে।
- উদাহরণ:
৩. Pattern Matching in Ruby
রুবিতে Pattern Matching রেগুলার এক্সপ্রেশন ব্যবহার করে বিভিন্ন ধরনের ডেটা যাচাই, খোঁজা এবং পরিবর্তন করতে হয়। রেগুলার এক্সপ্রেশনগুলি সাধারণত =~, .match, এবং .scan মেথডের মাধ্যমে ব্যবহার করা হয়।
৩.১ =~ অপারেটর
এটি রেগুলার এক্সপ্রেশন প্যাটার্নকে স্ট্রিংয়ের সাথে তুলনা করে এবং যদি প্যাটার্ন মেলে তবে স্ট্রিংয়ের অবস্থান প্রদান করে, না হলে nil ফেরত দেয়।
str = "Hello, World!"
if str =~ /Hello/
puts "Pattern matched!"
else
puts "No match"
endআউটপুট:
Pattern matched!৩.২ match মেথড
match মেথড রেগুলার এক্সপ্রেশন এবং স্ট্রিংয়ের মধ্যে মিল খুঁজে বের করতে ব্যবহৃত হয়। এটি একটি MatchData অবজেক্ট ফেরত দেয়, যেখানে মেলানো প্যাটার্নের বিভিন্ন অংশ পাওয়া যায়।
str = "Hello, World!"
result = str.match(/Hello/)
puts result[0] # Output: Helloএখানে, result[0] মিলানো প্যাটার্নের পূর্ণ অংশ Hello প্রদান করবে।
৩.৩ scan মেথড
scan মেথডটি একটি স্ট্রিংয়ের মধ্যে রেগুলার এক্সপ্রেশন প্যাটার্নের সব ম্যাচ খুঁজে বের করে এবং একটি অ্যারে হিসেবে ফেরত দেয়।
str = "The quick brown fox jumped over the lazy dog."
words = str.scan(/\w+/) # All words
puts words.inspectআউটপুট:
["The", "quick", "brown", "fox", "jumped", "over", "the", "lazy", "dog"]এখানে, .scan(/\w+/) ব্যবহার করে সমস্ত শব্দ খোঁজা হয়েছে।
৪. Replacing Text with Regex
রেগুলার এক্সপ্রেশন ব্যবহার করে আপনি স্ট্রিংয়ে টেক্সট প্রতিস্থাপন (replace) করতে পারেন। রুবির gsub মেথডটি এই কাজটি করে।
str = "Hello, World!"
new_str = str.gsub(/World/, "Ruby")
puts new_str # Output: Hello, Ruby!এখানে, "World" শব্দটি "Ruby" দিয়ে প্রতিস্থাপিত হয়েছে।
৫. Regex with Flags
রেগুলার এক্সপ্রেশন ব্যবহার করার সময় আপনি কিছু flags ব্যবহার করতে পারেন, যা প্যাটার্নের আচরণ নিয়ন্ত্রণ করে। যেমন:
i: বড় হাতের এবং ছোট হাতের অক্ষরের পার্থক্য না রাখে।m: মাল্টি-লাইন স্ট্রিংয়ে প্যাটার্ন মেলাবে।
উদাহরণ:
str = "hello"
puts str =~ /HELLO/i # Output: 0 (Match found, case insensitive)সারসংক্ষেপ
- Regular Expressions (Regex) হল একটি টুল যা টেক্সট ডেটার মধ্যে নির্দিষ্ট প্যাটার্ন খুঁজে বের করতে ব্যবহৃত হয়।
- Pattern Matching রেগুলার এক্সপ্রেশন ব্যবহার করে স্ট্রিংয়ের মধ্যে নির্দিষ্ট প্যাটার্ন খোঁজা এবং কাজ করা হয়।
- রুবিতে
=~,.match, এবং.scanমেথডের মাধ্যমে প্যাটার্ন ম্যাচিং করা যায়। - Regex এর অনেক সুনির্দিষ্ট সিম্বল (যেমন
*,+,?,[],^,$ইত্যাদি) রয়েছে যা প্যাটার্নের সাথে মিল খুঁজে বের করতে সাহায্য করে।
এটি ডেটা খোঁজা, ম্যানিপুলেশন এবং বৈধতা যাচাইয়ের জন্য একটি অত্যন্ত শক্তিশালী টুল।
Read more