রুবির gsub
সম্পর্কে কথা বলা যাক পদ্ধতি এবং কিভাবে ব্যবহার করতে হয়। প্রথমত, এই পদ্ধতিতে খেলতে আপনার একটি স্ট্রিং লাগবে।
কেন?
কারণ gsub
এর পুরো পয়েন্ট একটি স্ট্রিং এর অংশ প্রতিস্থাপন করা হয়।
আসলে :
"gsub"-এ "sub" এর অর্থ "বিকল্প" এবং "g" এর অর্থ "গ্লোবাল"।
এখানে একটি উদাহরণ স্ট্রিং :
str = "white chocolate"
ধরা যাক যে আমরা "সাদা" শব্দটিকে "অন্ধকার" শব্দের সাথে প্রতিস্থাপন করতে চাই।
এখানে কিভাবে :
str.gsub("white", "dark")
এটি বলছে :
str
স্ট্রিং দেওয়া হয়েছে , প্রথম শব্দের সমস্ত ঘটনা প্রতিস্থাপন করুন (white
) দ্বিতীয় শব্দের সাথে (dark
)।
যার মানে আমরা অনেক ভালো চকলেট খেতে পারি।
ওহ অপেক্ষা করুন, এটি শুধু একটি স্ট্রিং।
আমরা এটা খেতে পারি না! 🙂
যাইহোক…
রুবির gsub
পদ্ধতি সহজ প্রতিস্থাপন থেকে অনেক বেশি করতে পারে .
আসুন কয়েকটি উদাহরণ দেখি।
একটি নিয়মিত অভিব্যক্তি দিয়ে প্যাটার্নগুলি প্রতিস্থাপন করুন
একটি শব্দ প্রতিস্থাপন করা ভাল।
কিন্তু যদি আপনি একটি প্যাটার্ন প্রতিস্থাপন করতে পারেন?
লাইক :
একটি বছর, একটি ইমেল ঠিকানা, একটি ফোন নম্বর, ইত্যাদি৷
৷আপনি পারবেন!
এখানে একটি উদাহরণ আছে :
"a1".gsub(/\d/, "2") # "a2"
প্রথম যুক্তিটি একটি নিয়মিত অভিব্যক্তি, এবং এটি এখানে কভার করা খুব বেশি৷
৷কিন্তু এটি একটি প্যাটার্ন-ম্যাচিং ভাষা .
এই ক্ষেত্রে, \d
সংখ্যার সন্ধান করে, যেমন “a1”-এ “1” সংখ্যা।
আপনি এটিও করতে পারেন৷ :
"a1".gsub(/(\w)(\d)/, '\2\1')
যার ফলাফল :
"1a"
আমরা অর্ডার পরিবর্তন করেছি!
এটি "ক্যাপচার গ্রুপ" নামে একটি বৈশিষ্ট্য ব্যবহার করে কাজ করে৷
আমরা গ্রুপগুলিকে \1
হিসাবে ব্যবহার করতে পারি প্রথম গ্রুপের জন্য, \2
দ্বিতীয় গ্রুপের জন্য, ইত্যাদি।
বন্ধনী দিয়ে গ্রুপ তৈরি করা হয়।
ব্লক সহ উন্নত Gsub
আপনি যখন ব্লকের সাথে gsub ব্যবহার শুরু করেন তখন জিনিসগুলি সত্যিই আকর্ষণীয় হয়ে ওঠে।
কেন?
কারণ একটি ব্লকের মধ্যে আপনি কীভাবে কিছু প্রতিস্থাপন করবেন তা সিদ্ধান্ত নিতে যুক্তি ব্যবহার করতে পারেন।
একটি স্ট্যাটিক মান ব্যবহার করার পরিবর্তে।
উদাহরণস্বরূপ :
"dog".gsub(/\w+/) { |animal| animal == "dog" ? "cat" : "dog" }
আমরা \w+
দিয়ে প্রাণীটিকে খুঁজে পাই , যার অর্থ "এক বা একাধিক বর্ণসংখ্যার অক্ষর"৷
তারপর :
- যদি এটি একটি "কুকুর" হয়, আমরা এটিকে "বিড়াল" দিয়ে প্রতিস্থাপন করি
- যদি শব্দটি অন্য কিছু হয় , আমরা এটিকে "কুকুর" দিয়ে প্রতিস্থাপন করি
এই ধরনের যুক্তি একটি স্ট্যাটিক মান, gsub-এর ২য় প্যারামিটার দিয়ে সম্ভব নয়।
একটি হ্যাশ দিয়ে একাধিক শর্ত প্রতিস্থাপন করুন
আপনার কাছে প্রতিস্থাপনের তালিকা থাকলে আপনি একটি হ্যাশ ব্যবহার করতে পারেন।
এটির মত :
colors = { "B" => "blue", "G" => "green", "R" => "red" }
এটি একটি অনুবাদ অভিধানের মতো কাজ করে, যেখানে কীগুলি তাদের মান দ্বারা প্রতিস্থাপিত হবে৷
৷এখানে একটি উদাহরণ আছে :
"BBBGR".gsub(/\w/, colors)
যার ফলাফল :
"bluebluebluegreenred"
নিশ্চিত করুন যে আপনার 1ম আর্গুমেন্ট কীগুলির সাথে মেলে।
এই ক্ষেত্রে, \w
স্বতন্ত্র অক্ষরের সাথে মেলে, তাই এটি "B" এর সাথে মিলবে তারপর এটিকে "নীল" দিয়ে প্রতিস্থাপন করবে।
সারাংশ
আপনি রুবিতে gsub পদ্ধতি সম্পর্কে শিখেছেন! এটি একটি শক্তিশালী পদ্ধতি যা আপনাকে একটি স্ট্রিং এর মধ্যে অক্ষর প্রতিস্থাপন বা প্রতিস্থাপন করতে দেয়।
এর একাধিক ব্যবহার আছে :
- অবৈধ অক্ষর অপসারণ (২য় আর্গুমেন্টকে খালি স্ট্রিং বানিয়ে)
- স্থানধারক এবং সংক্ষিপ্ত শব্দগুলিকে তাদের সম্পূর্ণ মান দ্বারা প্রতিস্থাপন করা হচ্ছে
- একটি স্ট্রিং পরিবর্তন করতে প্যাটার্ন এবং যুক্তি ব্যবহার করা
এখন আপনার এই পদ্ধতির সাথে অনুশীলন করার পালা যাতে আপনি আপনার নতুন জ্ঞানকে স্টিক করতে পারেন।
পড়ার জন্য ধন্যবাদ 🙂