ট্র্যাক
/
Crystal
Crystal
/
অনুশীলনী
/
হাই স্কুলের প্রেম
হাই স্কুলের প্রেম

হাই স্কুলের প্রেম

লার্নিং অনুশীলনী

ভূমিকা

String-এ বেশ কিছু মেথড আছে, যা দিয়ে স্ট্রিং নিয়ে কাজ করা যায়। এই মেথডগুলো স্ট্রিংয়ের উপরেই কল করা হয় এবং একটি স্ট্রিংয়ের উপর একাধিক কাজ করার জন্য প্রায়ই এগুলোকে একসাথে চেইন করা হয়।

নিচে সবচেয়ে কমন কিছু মেথডের তালিকা দেওয়া হলো। সব মেথডের সম্পূর্ণ তালিকার জন্য String API ডকুমেন্টেশন দেখুন।

String#upcase ও String#downcase

upcase মেথডটি একটি নতুন স্ট্রিং রিটার্ন করে, যেখানে সব ক্যারেক্টার বড় হাতের অক্ষরে রূপান্তর করা হয়।

"hello".upcase
# => "HELLO"

downcase মেথডটি একটি নতুন স্ট্রিং রিটার্ন করে, যেখানে সব ক্যারেক্টার ছোট হাতের অক্ষরে রূপান্তর করা হয়।

"HELLO".downcase
# => "hello"

String#sub ও String#gsub

স্ট্রিংয়ের অংশ প্রতিস্থাপন করার জন্য Crystal-এ মেথড আছে। এগুলো হলো sub (সাবস্টিটিউশন) এবং gsub (গ্লোবাল সাবস্টিটিউশন)।

এই মেথডগুলো প্রথম আর্গুমেন্ট হিসেবে একটি স্ট্রিং, ক্যারেক্টার বা রেজেক্স এবং দ্বিতীয় আর্গুমেন্ট হিসেবে একটি স্ট্রিং বা ক্যারেক্টার নিতে পারে। প্রথম আর্গুমেন্টটি হলো স্ট্রিংয়ের যে অংশটি প্রতিস্থাপন করা হবে, আর দ্বিতীয় আর্গুমেন্টটি হলো তার বদলে যা বসবে। Char এবং রেজেক্স পরের কনসেপ্টগুলোতে ব্যাখ্যা করা হবে।

sub মেথডটি প্রথম আর্গুমেন্টের প্রথম উপস্থিতিটি দ্বিতীয় আর্গুমেন্ট দিয়ে প্রতিস্থাপন করে।

"hello".sub("l", "r")
# => "herlo"

gsub মেথডটি sub-এর মতোই কাজ করে, তবে প্রথম আর্গুমেন্টের সব উপস্থিতি দ্বিতীয় আর্গুমেন্ট দিয়ে প্রতিস্থাপন করে।

"hello".gsub("l", "r")
# => "herro"

String#chomp ও String#strip

স্ট্রিং থেকে অবাঞ্ছিত ক্যারেক্টার সরাতে chomp ও strip ব্যবহার করা যায়।

chomp মেথডটি ডিফল্টভাবে একটি স্ট্রিংয়ের শেষের \r, \n বা \r\n ক্যারেক্টার সরিয়ে দেয়। মেথডটি যদি একটি আর্গুমেন্ট নিয়ে কল করা হয়, তাহলে সেটি স্ট্রিংয়ের শেষ থেকে প্রদত্ত মানটি সরিয়ে দেয়। যদি সেটি স্ট্রিংয়ের শেষে থেকে থাকে।

"hello\n".chomp
# => "hello"

"hello".chomp("llo")
# => "he"

ডিফল্টভাবে strip মেথডটি একটি স্ট্রিংয়ের শুরু ও শেষ থেকে সব হোয়াইটস্পেস সরিয়ে দেয়। মেথডটি যদি একটি আর্গুমেন্ট নিয়ে কল করা হয়, তাহলে সেটি স্ট্রিংয়ের শুরু ও শেষ থেকে ওই আর্গুমেন্টটি সরিয়ে দেয়। যদি সেটি স্ট্রিংয়ের শুরুতে বা শেষে থেকে থাকে।

" hello ".strip
# => "hello"

String#index

একটি স্ট্রিংয়ে কোনো ক্যারেক্টারের ইনডেক্স খুঁজে বের করতে index মেথডটি ব্যবহার করা যায়। index মেথডটি আর্গুমেন্ট হিসেবে একটি String, Char বা রেজেক্স নেয়। এটি চাইলে একটি দ্বিতীয় আর্গুমেন্টও নিতে পারে, যেখানে খোঁজ শুরু করতে হবে সেই ইনডেক্স উল্লেখ করা যায়। index মেথডটি আর্গুমেন্টের প্রথম উপস্থিতির ইনডেক্স রিটার্ন করে।

"hello".index("l")
# => 2

"hello".index("l", 3)
# => 3

String#delete_at

স্ট্রিং থেকে একটি ক্যারেক্টার সরাতে আপনি delete_at মেথডটি ব্যবহার করতে পারেন। delete_at মেথডটি আর্গুমেন্ট হিসেবে একটি ইনডেক্স নেয় এবং ওই ইনডেক্সের ক্যারেক্টারটি সরিয়ে দেয়।

"hello".delete_at(0)
# => "ello"

"hello".delete_at(3)
# => "helo"

String#insert

একটি নির্দিষ্ট ইনডেক্সে স্ট্রিং বসাতে insert মেথডটি ব্যবহার করা যায়। insert মেথডটি প্রথম আর্গুমেন্ট হিসেবে একটি ইনডেক্স এবং দ্বিতীয় আর্গুমেন্ট হিসেবে একটি স্ট্রিং নেয়। insert মেথডটি একটি নতুন স্ট্রিং রিটার্ন করে, যেখানে দ্বিতীয় আর্গুমেন্টটি ওই ইনডেক্সে বসানো থাকে।

"hello".insert(0, "h")
# => "hhello"

"hello".insert(3, "l")
# => "helllo"

নির্দেশনা

এই অনুশীলনীতে আপনি হাই স্কুলের প্রেমিক-প্রেমিকাদের সোশ্যাল মিডিয়ায় তাদের ভালোবাসা প্রকাশ করতে সাহায্য করবেন, তাদের আদ্যক্ষর দিয়ে একটি ASCII হার্ট তৈরি করে:

❤ J.  +  M. ❤

1. নাম পরিষ্কার করুন

HighSchoolSweetheart.clean_up_name মেথডটি ইমপ্লিমেন্ট করুন। এটি একটি নাম নেবে এবং সেখান থেকে সব - ক্যারেক্টার সরিয়ে সেগুলোর জায়গায় একটি স্পেস বসাবে। এটি নামের শুরু ও শেষ থেকে হোয়াইটস্পেসও সরিয়ে দেবে।

HighSchoolSweetheart.clean_up_name("Jane-Ann")
# => "Jane Ann"

2. নামের প্রথম অক্ষরটি বের করুন

HighSchoolSweetheart.first_letter মেথডটি ইমপ্লিমেন্ট করুন। এটি একটি নাম নেবে এবং তার প্রথম অক্ষর রিটার্ন করবে। আগের ধাপে আপনি যে HighSchoolSweetheart.clean_up_name ডিফাইন করেছিলেন, সেটি যেন অবশ্যই আবার ব্যবহার করেন।

HighSchoolSweetheart.first_letter("Jane")
# => "J"

3. প্রথম অক্ষরটিকে আদ্যক্ষর হিসেবে ফরম্যাট করুন

HighSchoolSweetheart.initial মেথডটি ইমপ্লিমেন্ট করুন। এটি একটি নাম নেবে এবং তার প্রথম অক্ষরটি বড় হাতের অক্ষরে, তারপরে একটি ডট দিয়ে রিটার্ন করবে। আগের ধাপে আপনি যে HighSchoolSweetheart.first_letter ডিফাইন করেছিলেন, সেটি যেন অবশ্যই আবার ব্যবহার করেন।

HighSchoolSweetheart.initial("Robert")
# => "R."

4. আদ্যক্ষরগুলো হার্টের ভেতরে বসান

HighSchoolSweetheart.pair মেথডটি ইমপ্লিমেন্ট করুন। এটি দুটি নাম নেবে এবং আদ্যক্ষরগুলোর চারপাশে এমোজি হার্ট বসিয়ে সেগুলো রিটার্ন করবে। আগের ধাপে আপনি যে HighSchoolSweetheart.initial ডিফাইন করেছিলেন, সেটি যেন অবশ্যই আবার ব্যবহার করেন।

HighSchoolSweetheart.pair("Blake Miller", "Riley Lewis")
# => "❤ B.  +  R. ❤"
GitHub-এর মাধ্যমে সম্পাদনা করুন লিংকটি একটি নতুন উইন্ডো বা ট্যাবে খোলে
Crystal Exercism

হাই স্কুলের প্রেম শুরু করতে প্রস্তুত?

Exercism-এ সাইন আপ করুন, Crystal ট্র্যাকের 26টি কনসেপ্ট142টি অনুশীলনী আর সত্যিকারের মানুষের মেন্টরিং দিয়ে শিখুন ও দক্ষ হয়ে উঠুন, সম্পূর্ণ বিনামূল্যে।