"হাই, অ্যামিগো!"

"আমি যতদূর জানি, ঋষি আপনাকে রেগুলার এক্সপ্রেশন সম্পর্কে আগেই বলেছে।"

"হ্যাঁ, এটা খুব আকর্ষণীয় ছিল।"

"দারুণ, এখন আমি আপনাকে স্ট্রিংসের সাথে কাজ করার জন্য রেগুলার এক্সপ্রেশন ব্যবহার করার বিষয়ে বলব।"

"আসুন সহজতম প্রশ্ন দিয়ে শুরু করা যাক:"

1) একটি স্ট্রিং একটি রেগুলার এক্সপ্রেশন দ্বারা নির্দিষ্ট প্যাটার্নের সাথে মেলে কিনা তা আমি কিভাবে পরীক্ষা করব?

"এর জন্য একটি ম্যাচ পদ্ধতি আছে। আপনি একটি রেগুলার এক্সপ্রেশন সম্বলিত একটি স্ট্রিং পাস করেন এবং পদ্ধতিটি সত্য বা মিথ্যা প্রদান করে।"

পদ্ধতি(গুলি) উদাহরণ(গুলি)
boolean matches(String regex)
String s = "Good news, everyone!";
Boolean test = s.matches("news\\.*");
ফলাফল:

false (the String doesn't start with "news")

2) কিভাবে আমি সমস্ত মিলে যাওয়া সাবস্ট্রিংগুলিকে বিভিন্ন স্ট্রিং দিয়ে প্রতিস্থাপন করব?

"এর জন্য দুটি পদ্ধতি আছে।"

" ReplaceAll পদ্ধতি একটি সাবস্ট্রিং এর সমস্ত ঘটনাকে অন্য স্ট্রিং দিয়ে প্রতিস্থাপন করে।"

" রিপ্লেস ফার্স্ট পদ্ধতিটি একটি নির্দিষ্ট স্ট্রিং দিয়ে পাস করা সাবস্ট্রিংয়ের প্রথম ঘটনাকে প্রতিস্থাপন করে।"

পদ্ধতি(গুলি) উদাহরণ(গুলি)
String replaceAll(String regex, String replacement)
String s = "Good news, everyone!";
String s2 = s.replaceAll ("e\\.","EX");
ফলাফল:

s2 == "Good nEXs EXEXyonEX";
String replaceFirst(String regex, String replacement)
String s = "Good news, everyone!";
String s2 = s.replaceFirst("e\\.","EX");
ফলাফল:

s2 == "Good nEXs, everyone!";

3) আমি কীভাবে একটি স্ট্রিংকে অংশে বিভক্ত করব?

"এর জন্য, আমাদের কাছে বিভক্ত পদ্ধতি রয়েছে, যা একটি সীমাবদ্ধ মুখোশ নেয়:"

পদ্ধতি(গুলি) উদাহরণ(গুলি)
String[] split(String regex)
String s = "Good news everyone!";
String[] ss = s.split("ne");
System.out.println(Arrays.toString(ss));
ফলাফল (তিনটি স্ট্রিংয়ের একটি অ্যারে):

[Good , ws everyo, !]
"Good ", "ws everyo", "!";

" স্ট্রিংটোকেনাইজার ক্লাস একটি স্ট্রিংকে অংশে বিভক্ত করার আরেকটি উপায় ।"

"এই শ্রেণীটি রেগুলার এক্সপ্রেশন ব্যবহার করে না। পরিবর্তে, আপনি কেবলমাত্র একটি স্ট্রিংয়ে পাস করেন যাতে একটি সীমাবদ্ধতার সেট রয়েছে। এই পদ্ধতির সুবিধা হল যে এটি পুরো স্ট্রিংটিকে একবারে টুকরো টুকরো করে না, পরিবর্তে এটি ধীরে ধীরে সরে যায় শুরু থেকে শেষ।"

"ক্লাসটিতে একটি কনস্ট্রাক্টর এবং দুটি পদ্ধতি রয়েছে। আপনাকে স্ট্রিংটি পাস করতে হবে যা আমরা কনস্ট্রাক্টরে আলাদা করছি, একটি স্ট্রিং সহ সীমাবদ্ধ অক্ষরগুলির সেট রয়েছে।"

NextToken পদ্ধতি পরবর্তী টোকেন (সাবস্ট্রিং) প্রদান করে।

hasMoreTokens() পদ্ধতিটি সত্য ফেরত দেয় যদি এখনও এমন সাবস্ট্রিং থাকে যা এখনও ফেরত দেওয়া হয়নি।

পদ্ধতি(গুলি) উদাহরণ(গুলি)
boolean hasMoreTokens()

String nextToken()
String s = "Good news, everyone!";

StringTokenizer tokenizer =
new StringTokenizer(s,"ne");
while (tokenizer.hasMoreTokens())
{
String token = tokenizer.nextToken();
System.out.println(token);
}
স্ক্রীন আউটপুট:

Good
ws
v
ryo
!

"উল্লেখ্য যে স্ট্রিংটোকেনাইজার কনস্ট্রাক্টরের কাছে পাস করা দ্বিতীয় স্ট্রিংয়ের যেকোনো অক্ষরকে একটি বিভাজনকারী হিসাবে বিবেচনা করা হয়।"

"আবারও, সবকিছু পরিষ্কার বলে মনে হচ্ছে। আমি হয়তো এখনই এই কোডটি নিজে থেকে লিখতে পারব না, কিন্তু আমি বুঝতে পারছি এখানে কী হচ্ছে।"

"চমৎকার, তাহলে আমরা ধরে নেব যে আপনি বিষয়টি আয়ত্ত করেছেন।"