1. স্ট্রিং তুলনা

স্ট্রিং সহ সবচেয়ে সাধারণ অপারেশনগুলির মধ্যে একটি হল তুলনা। স্ট্রিং ক্লাসে দশটিরও বেশি ভিন্ন পদ্ধতি রয়েছে যা একটি স্ট্রিংকে অন্য স্ট্রিংয়ের সাথে তুলনা করতে ব্যবহৃত হয়। নীচে আমরা সাতটি প্রধানের দিকে নজর দেব।

পদ্ধতি বর্ণনা
boolean equals(String str)
স্ট্রিং সমান বলে বিবেচিত হয় যদি তাদের সমস্ত অক্ষর মিলে যায়।
boolean equalsIgnoreCase(String str)
অক্ষরের ক্ষেত্রে উপেক্ষা করে, স্ট্রিংগুলির তুলনা করে (তারা বড় হাতের বা ছোট হাতের তা উপেক্ষা করে)
int compareTo(String str)
অভিধানিকভাবে স্ট্রিং তুলনা করে। স্ট্রিং সমান হলে 0 প্রদান করে। বর্তমান স্ট্রিং স্ট্রিং প্যারামিটারের চেয়ে কম হলে রিটার্ন মান শূন্যের কম হয়। বর্তমান স্ট্রিং স্ট্রিং প্যারামিটারের চেয়ে বড় হলে রিটার্ন মান তার থেকে বেশি।
int compareToIgnoreCase(String str)
কেস উপেক্ষা করার সময় অভিধানিকভাবে স্ট্রিংগুলির তুলনা করে। স্ট্রিং সমান হলে 0 প্রদান করে। বর্তমান স্ট্রিং স্ট্রিং প্যারামিটারের চেয়ে কম হলে রিটার্ন মান নেতিবাচক হয়। বর্তমান স্ট্রিং স্ট্রিং প্যারামিটারের চেয়ে বড় হলে রিটার্ন মান তার থেকে বেশি।
boolean regionMatches(int toffset, String str, int offset, int len)
স্ট্রিং অংশ তুলনা
boolean startsWith(String prefix)
বর্তমান স্ট্রিং স্ট্রিং দিয়ে শুরু হয় কিনা তা পরীক্ষা করেprefix
boolean endsWith(String suffix)
বর্তমান স্ট্রিং স্ট্রিং দিয়ে শেষ হয় কিনা তা পরীক্ষা করেsuffix

ধরা যাক আপনি এমন একটি প্রোগ্রাম লিখতে চান যা ব্যবহারকারীকে একটি ফাইলের পাথের জন্য জিজ্ঞাসা করে এবং তারপরে তার এক্সটেনশনের উপর ভিত্তি করে ফাইলের ধরনটি পরীক্ষা করে। এই ধরনের একটি প্রোগ্রামের কোড এই মত কিছু দেখতে পারে:

কোড মন্তব্য
Scanner console = new Scanner(System.in);
String path = console.nextLine();

if (path.endsWith(".jpg") || path.endsWith(".jpeg"))
{
   System.out.println("This is a jpeg!");
}
else if (path.endsWith(".htm") || path.endsWith(".html"))
{
   System.out.println("This is an HTML page");
}
else if (path.endsWith(".doc") || path.endsWith(".docx"))
{
   System.out.println("This is a Word document");
}
else
{
   System.out.println("Unknown format");
}
একটি Scannerবস্তু তৈরি করুন
কনসোল থেকে একটি লাইন পড়ুন প্রদত্ত স্ট্রিং দিয়ে

স্ট্রিং শেষ হয় কিনা তা পরীক্ষা করুনpath


2. সাবস্ট্রিং অনুসন্ধান করা হচ্ছে

স্ট্রিং তুলনা করার পরে, দ্বিতীয় সর্বাধিক জনপ্রিয় অপারেশন হল একটি স্ট্রিং অন্যটির ভিতরে খুঁজে পাওয়া। স্ট্রিং ক্লাসেরও এর জন্য কয়েকটি পদ্ধতি রয়েছে:

পদ্ধতি বর্ণনা
int indexOf(String str)
strবর্তমান স্ট্রিং মধ্যে স্ট্রিং জন্য অনুসন্ধান . প্রথম ঘটনার প্রথম অক্ষরের সূচী প্রদান করে।
int indexOf(String str, int index)
strবর্তমান স্ট্রিং-এ স্ট্রিং অনুসন্ধান করে , প্রথম indexঅক্ষরগুলি এড়িয়ে যায়৷ ঘটনার সূচী প্রদান করে।
int lastIndexOf(String str)
strশেষ থেকে শুরু করে বর্তমান স্ট্রিং-এ স্ট্রিং অনুসন্ধান করে । প্রথম ঘটনার সূচী প্রদান করে।
int lastIndexOf(String str, int index)
প্রথম অক্ষরগুলি strএড়িয়ে শেষ থেকে বর্তমান স্ট্রিং-এ স্ট্রিং অনুসন্ধান করে ৷index
boolean matches(String regex)
বর্তমান স্ট্রিং একটি নিয়মিত অভিব্যক্তি দ্বারা নির্দিষ্ট একটি প্যাটার্নের সাথে মেলে কিনা তা পরীক্ষা করে৷

indexOf(String)এবং পদ্ধতিগুলি indexOf(String, index)প্রায়শই সংমিশ্রণে ব্যবহৃত হয়। প্রথম পদ্ধতিটি আপনাকে বর্তমান স্ট্রিং-এ পাস করা সাবস্ট্রিংয়ের প্রথম উপস্থিতি খুঁজে পেতে দেয়। এবং দ্বিতীয় পদ্ধতিটি আপনাকে প্রথম সূচক অক্ষরগুলি এড়িয়ে দ্বিতীয়, তৃতীয়, ইত্যাদি ঘটনাগুলি খুঁজে পেতে দেয়।

ধরুন আমাদের কাছে " https://domain.com/about/reviews " এর মত একটি url আছে এবং আমরা " codegym.cc " দিয়ে ডোমেইন নাম প্রতিস্থাপন করতে চাই ৷ ইউআরএল-এর বিভিন্ন ধরণের ডোমেইন নাম থাকতে পারে, তবে আমরা নিম্নলিখিতগুলি জানি:

  • ডোমেইন নামের আগে দুটি ফরোয়ার্ড স্ল্যাশ রয়েছে — " //"
  • ডোমেন নামটি একটি একক ফরোয়ার্ড স্ল্যাশ দ্বারা অনুসরণ করা হয় — " /"

এই ধরনের একটি প্রোগ্রামের কোড দেখতে কেমন হবে তা এখানে:

কোড মন্তব্য
Scanner console = new Scanner(System.in);
String path = console.nextLine();

int index = path.indexOf("//");
int index2 = path.indexOf("/", index + 2);

String first = path.substring(0, index + 2);
String last = path.substring(index2);

String result = first + "codegym.cc" + last;
System.out.println(result);
একটি স্ক্যানার অবজেক্ট তৈরি করুন
কনসোল থেকে একটি লাইন পড়ুন

স্ট্রিংটির প্রথম সংঘটনের সূচী পান " //"
আমরা স্ট্রিংটির প্রথম উপস্থিতির সূচী পাই /, কিন্তু শুধুমাত্র অক্ষরগুলির একটি ঘটনার পরেই তাকান //
আমরা অক্ষরের শুরু থেকে শেষ পর্যন্ত স্ট্রিং পাই আমরা শেষ থেকে শেষ পর্যন্ত //
স্ট্রিং পাই । আমরা স্ট্রিং এবং নতুন ডোমেন সংযুক্ত করি। /

এবং পদ্ধতিগুলি একইভাবে কাজ করে, শুধুমাত্র অনুসন্ধানটি স্ট্রিংয়ের শেষ থেকে শুরু পর্যন্ত সঞ্চালিত হয় lastIndexOf(String)lastIndexOf(String, index)



3. সাবস্ট্রিং তৈরি করা

স্ট্রিং তুলনা করা এবং সাবস্ট্রিং খোঁজার পাশাপাশি, আরেকটি খুব জনপ্রিয় ক্রিয়া রয়েছে: একটি স্ট্রিং থেকে একটি সাবস্ট্রিং পাওয়া। যেমনটি ঘটে, আগের উদাহরণটি আপনাকে একটি substring()পদ্ধতি কল দেখিয়েছে যা একটি স্ট্রিংয়ের অংশ ফিরিয়ে দিয়েছে।

এখানে 8টি পদ্ধতির একটি তালিকা রয়েছে যা বর্তমান স্ট্রিং থেকে সাবস্ট্রিংগুলি ফিরিয়ে দেয়:

পদ্ধতি বর্ণনা
String substring(int beginIndex, int endIndex)
সূচক পরিসর দ্বারা নির্দিষ্ট করা সাবস্ট্রিং প্রদান করে beginIndex..endIndex
String repeat(int count)
বর্তমান স্ট্রিং n বার পুনরাবৃত্তি করে
String replace(char oldChar, char newChar)
একটি নতুন স্ট্রিং প্রদান করে: অক্ষরটিকে oldCharঅক্ষর দিয়ে প্রতিস্থাপন করেnewChar
String replaceFirst(String regex, String replacement)
বর্তমান স্ট্রিং-এ একটি নিয়মিত এক্সপ্রেশন দ্বারা নির্দিষ্ট করা প্রথম সাবস্ট্রিংকে প্রতিস্থাপন করে।
String replaceAll(String regex, String replacement)
রেগুলার এক্সপ্রেশনের সাথে মেলে বর্তমান স্ট্রিং-এর সমস্ত সাবস্ট্রিং প্রতিস্থাপন করে।
String toLowerCase()
স্ট্রিংকে ছোট হাতের অক্ষরে রূপান্তর করে
String toUpperCase()
স্ট্রিংটিকে বড় হাতের অক্ষরে রূপান্তর করে
String trim()
একটি স্ট্রিংয়ের শুরুতে এবং শেষে সমস্ত স্পেস সরিয়ে দেয়

এখানে উপলব্ধ পদ্ধতিগুলির একটি সারসংক্ষেপ রয়েছে:

substring(int beginIndex, int endIndex)পদ্ধতি

পদ্ধতিটি substringএকটি নতুন স্ট্রিং প্রদান করে যা বর্তমান স্ট্রিং-এর অক্ষর নিয়ে গঠিত, সূচক সহ অক্ষর থেকে শুরু করে beginIndexএবং শেষ হয় endIndex। জাভাতে সমস্ত ব্যবধানের মতো, সূচক সহ অক্ষরটি endIndexব্যবধানে অন্তর্ভুক্ত নয়। উদাহরণ:

কোড ফলাফল
"Hellos".substring(0, 3);
"Hel"
"Hellos".substring(1, 4);
"ell"
"Hellos".substring(1, 6);
"ellos"
"Hellos".substring(1);
"ellos"

যদি endIndexপ্যারামিটারটি নির্দিষ্ট করা না থাকে (যা সম্ভব), তাহলে সাবস্ট্রিংটি beginIndex-এর অক্ষর থেকে স্ট্রিংয়ের শেষ পর্যন্ত নেওয়া হয়।

repeat(int n)পদ্ধতি

পুনরাবৃত্তি পদ্ধতিটি কেবল বর্তমান স্ট্রিং nবার পুনরাবৃত্তি করে। উদাহরণ:

কোড ফলাফল
"Hello".repeat(3);
"HelloHelloHello"
"Hello".repeat(2);
"HelloHello"
"Hello".repeat(1);
"Hello"
"Hello".repeat(0);
""

replace(char oldChar, char newChar)পদ্ধতি

পদ্ধতিটি replace()একটি নতুন স্ট্রিং প্রদান করে যেখানে সমস্ত অক্ষর oldCharঅক্ষর দিয়ে প্রতিস্থাপিত হয় newChar। এটি স্ট্রিংয়ের দৈর্ঘ্য পরিবর্তন করে না। উদাহরণ:

কোড ফলাফল
"Programming".replace('Z', 'z');
"Programming"
"Programming".replace('g', 'd');
"Prodrammind"
"Programming".replace('a', 'e');
"Progremming"
"Programming".replace('m', 'w');
"Prograwwing"

replaceFirst()এবং replaceAll()পদ্ধতি

পদ্ধতিটি replaceAll()একটি সাবস্ট্রিংয়ের সমস্ত ঘটনাকে অন্যটির সাথে প্রতিস্থাপন করে। পদ্ধতিটি replaceFirst()নির্দিষ্ট সাবস্ট্রিং দিয়ে পাস করা সাবস্ট্রিং-এর প্রথম ঘটনাকে প্রতিস্থাপন করে। প্রতিস্থাপন করা স্ট্রিং একটি নিয়মিত অভিব্যক্তি দ্বারা নির্দিষ্ট করা হয়. আমরা জাভা মাল্টিথ্রেডিং কোয়েস্টে রেগুলার এক্সপ্রেশন নিয়ে আলোচনা করব ।

উদাহরণ:

কোড ফলাফল
"Good news everyone!".replaceAll("e.", "EX");
"Good nEXs EXEXyonEX"
"Good news everyone!".replaceAll("o.", "-o-");
"G-o-d news every-o-e!"
"Good news everyone!".replaceFirst("e.", "EX");
"Good nEXs everyone!"
"Good news everyone!".replaceFirst("o.", "-o-");
"G-o-d news everyone!"

toLowerCase() and toUpperCase()পদ্ধতি

আমরা এই পদ্ধতিগুলি জানতে পেরেছিলাম যখন আমরা প্রথম ক্লাসের পদ্ধতিগুলি কল করার বিষয়ে শিখি String

trim()পদ্ধতি

পদ্ধতিটি trim()একটি স্ট্রিং থেকে অগ্রণী এবং পিছনের স্থানগুলি সরিয়ে দেয়। স্ট্রিংয়ের ভিতরে থাকা স্থানগুলি স্পর্শ করে না (যেমন শুরুতে বা শেষে নয়)। উদাহরণ:

কোড ফলাফল
"     ".trim();
""
"Hello".trim();
"Hello"
" Hello\n how are you?\n   ".trim();
"Hello\n how are you?\n"
"  Password\n   \n ".trim();
"Password\n   \n"