কম্পিউটার টিউটোরিয়াল

জাভা স্ট্রিং: শুরুর জন্য সম্পূর্ণ গাইড

স্ট্রিং শুনলে আপনি একটি বিডালকে ঊনের গোড়া দিয়ে খেলতে দেখতে পারেন। সত্যি একটি ঊনের গোড়া হলো স্ট্রিং, কিন্তু প্রোগ্রামাররা স্ট্রিং শব্দটি ব্যবহার করলে সেটি কিছু ভিন্ন বোঝায়।

প্রোগ্রামিং-এ, একটি স্ট্রিং হলো এক বা অধিক ক্যারেক্টারের সিকোয়েন্স। কম্পিউটারের সাথে আমাদের দৈনন্দিন ইন্টারঅ্যাকশনে টেক্সট-ভিত্তিক ডেটা কতটা গুরুত্বপূর্ণ সেটি বিবেচনা করলে, স্ট্রিং প্রোগ্রামিং-এ একটি অত্যন্ত গুরুত্বপূর্ণ অংশ হয়ে উঠেছে তা আশ্চর্যের কথা নয়।

এই গাইডে আমরা কীভাবে একটি স্ট্রিং তৈরি করবেন, কীভাবে একটি স্ট্রিং কনক্যাটেনেট করবেন, এবং কীভাবে একটি স্ট্রিংয়ের মান একটি ভেরিয়েবলে সংরক্ষণ করবেন তা আলোচনা করব। কিছু উদাহরণ দিয়ে আপনাকে গাইড করব।

জাভা স্ট্রিং তৈরি করা

একটি স্ট্রিং জাভা-তে টেক্সট সংরক্ষণ করতে ব্যবহৃত হয়। যেখানে char ডেটা টাইপ একটি একক ক্যারেক্টার সংরক্ষণ করে, স্ট্রিং আপনি যত চান তত ক্যারেক্টার ধারণ করতে পারে। স্ট্রিং বাইটের সিকোয়েন্স।

স্ট্রিং ডাবল কোটেশনের মাঝপথে ডিফাইন করা হয়। এটি পাইথন বা জাভাস্ক্রিপ্টের মতো ল্যাঙ্গুয়েজ থেকে ভিন্ন যেগুলো সিংল এবং ডাবল কোটেশন দুটোই এক্সেপ্ট করে। জাভা-তে একটি স্ট্রিং উদাহরণ:

"This is an example string."

আপনি println() ফাংশন ব্যবহার করে একটি স্ট্রিংয়ের কন্টেন্ট প্রিন্ট আউট করতে পারেন:

System.out.println("This is an example string.");

আমাদের কোড ফেরত দেবে: This is an example string। আমরা একটি নতুন স্ট্রিং কনস্ট্রাক্ট করেছি। এখন আপনি স্ট্রিং ডিক্লেয়ার করা জানেন, আমরা আপনার কোডে স্ট্রিং কীভাবে ব্যবহার করবেন তা বলতে পারি।

স্ট্রিং কনক্যাটেনেশন

কনক্যাটেনেশন, কত বড় একটি শব্দ! এর ডেফিনিশন খুব সহজ: এর মানে দুটি স্ট্রিং মিলিয়ে একটি নতুন স্ট্রিং তৈরি করা। আপনি + অপারেটর (প্লাস সাইন) ব্যবহার করে দুটি স্ট্রিং কনক্যাটেনেট করতে পারেন।

ধরুন, আমাদের দুটি স্ট্রিং রয়েছে: William এবং Carter। প্রথম স্ট্রিংটি একটি ফোরনেম এবং দ্বিতীয় স্ট্রিংটি একটি সারনেম। আমরা + অপারেটর ব্যবহার করে সেগুলো মিলিয়ে ফেলতে পারি:

String fullname = "William" + "Carter";
System.out.println(fullname);

আমাদের কোড আউটপুট দেবে: WilliamCarter। অপেক্ষা করুন, কী হয়েছে? এই দুটি শব্দের মাঝপথে স্পেস কেন নেই?

ডিফল্টভাবে, কনক্যাটেনেটেড স্ট্রিং-এর মাঝপথে কোনো হোয়াইটস্পেস যোগ হয় না। আমরা যদি একটি স্পেস চাই, তবে William নামের পরে সেটি যোগ করতে হবে:

String fullname = "William " + "Carter";
System.out.println(fullname);

প্রোগ্রাম চালালে এটি ফেরত দেবে: William Carter।

স্ট্রিংয়ের দৈর্ঘ্য ক্যালকুলেট করা

আপনি কীভাবে একটি স্ট্রিংয়ের দৈর্ঘ্য ক্যালকুলেট করবেন? কত ভালো একটি প্রশ্ন। আমাদের সৌভাগ্যে, এটার জন্য আমাদের কোনো জটিল ফাংশন লিখতে হবে না।

জাভা-তে ইতিমধ্যে একটি বিল্ট-ইন ফাংশন রয়েছে যা আমরা একটি স্ট্রিংয়ের দৈর্ঘ্য ক্যালকুলেট করতে ব্যবহার করতে পারি: length()। মেথডের জন্য কত সুবিধাজনক একটি নাম!

আমরা একটি প্রোগ্রাম তৈরি করব যা একটি চতুর্থ শ্রেণির ক্লাসের দুজন শিক্ষার্থীর নামের দৈর্ঘ্য ক্যালকুলেট করবে। একটি নতুন জাভা ফাইল তৈরি করুন এবং আপনার মেইন ক্লাসে নিচের কোড পেস্ট করুন:

String name1 = "William Carter";
String name2 = "Helena Ohara";
int name1length = name1.length() - 1;
int name2length = name2.length() - 1;
System.out.println(name1 + "'s name is " + name1length + " letters long.");
System.out.println(name2 + "'s name is " + name2length + " letters long.");

আমাদের কোড চালিয়ে দেখি:

William Carter's name is 13 letters long.
Helena Ohara's name is 11 letters long.

আমরা দুটি ভেরিয়েবল ডিফাইন করেছি যা আমাদের শিক্ষার্থীদের নাম সংরক্ষণ করে: name1 এবং name2। আমরা length() মেথড ব্যবহার করেছি এই স্ট্রিংগুলোর দৈর্ঘ্য ক্যালকুলেট করতে। আমরা প্রতিটি নামের দৈর্ঘ্য থেকে ১ বিয়োগ করেছি মাঝপথের স্পেসের জন্য অ্যাকাউন্ট করতে।

তারপর, আমরা প্রতিটি নামের দৈর্ঘ্য আমাদেরকে জানানোর একটি মেসেজ প্রিন্ট করেছি।

একটি স্ট্রিংয়ের ভেতর থেকে একটি স্ট্রিং খুঁজে বের করা

হয়তো আপনি একটি স্ট্রিংয়ের ভেতর থেকে অন্য একটি স্ট্রিং খুঁজে বের করতে চান। সেটিই indexOf() মেথড কাজে লাগে। এই মেথড একটি নির্দিষ্ট টেক্সট স্ট্রিংয়ের প্রথম föreাবৃত্তির পজিশন ফেরত দেয়।

কীভাবে এটি কাজ করে সেটি বলার আগে, আমাদের সংক্ষেপে index নিয়ে কথা বলতে হবে। জাভা-তে, স্ট্রিং ইনডেক্স নম্বর ব্যবহার করে ইনডেক্স করা হয়। এর মানে একটি স্ট্রিংয়ের প্রতিটি ক্যারেক্টারের নিজস্ব একটি নম্বর রয়েছে, যেটি ব্যবহার করে আমরা প্রতিটি আইটেম আলাদা আলাদা অ্যাক্সেস করতে পারি।

"William Carter" স্ট্রিংয়ের ইনডেক্স ব্রেকডাউন:

WilliamCarter
012345678910111213

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

ধরুন আমরা জানতে চাই এই স্ট্রিংয়ে Carter কোথায় আছে। আমরা indexOf() মেথড ব্যবহার করে এভাবে করতে পারি:

String name = "William Carter";
int position = name.indexOf("Carter");
System.out.println("Carter appears starting at index value " + position);

আমাদের কোড ফেরত দেবে: Carter appears starting at index value 8। indexOf() সেটি ক্যারেক্টারটি যে ইনডেক্স পজিশনে দিয়ে শুরু হয়েছে সেটি ফেরত দেয়।

দুটি স্ট্রিং সমান কিনা চেক করা

স্ট্রিং তুলনা প্রোগ্রামিং-এ دائماً হয়। লগইন ফর্মে আপনি পাসওয়ার্ড দিলে কী হয়? অ্যাপ্লিকেশনটি আপনার দেওয়া পাসওয়ার্ডটি তার ডাটাবেসে সংরক্ষিত পাসওয়ার্ডের সাথে তুলনা করে।

ধরুন, আমরা একটি প্রোগ্রাম লিখব যা চেক করবে একটি ইউজারের পাসওয়ার্ড সঠিক কিনা। একটি নতুন জাভা ফাইল খুলুন এবং আপনার মেইন প্রোগ্রামে নিচের কোড পেস্ট করুন:

String entered_password = "Test123";
String saved_password = "Test12345";
boolean compare_passwords = entered_password.equals(saved_password);
System.out.println("Does the entered password match the saved password? " + compare_passwords);

আমাদের কোড ফেরত দেবে: Does the entered password match the saved password? false

আমাদের প্রোগ্রাম চেক করে আমরা নির্দিষ্ট করা দুটি স্ট্রিং—entered_password এবং saved_password সমান কিনা। আমরা এই চেক পারফর্ম করতে equals() মেথড ব্যবহার করেছি। এই মেথড true ফেরত দেয় যদি স্ট্রিংগুলো সমান হয়; অন্যথায়, false ফেরত দেয়।

entered_password এর মান saved_password এর সমান করি:

String entered_password = "Test12345";
String saved_password = "Test12345";
...

এই কোড চালালে আমাদের প্রোগ্রাম ফেরত দেবে: Does the entered password match the saved password? true

উভয় স্ট্রিং মিলে গেছে, ফলে আমাদের equals() মেথড true ইভ্যালুয়েট করেছে।

স্পেশাল ক্যারেক্টার

স্ট্রিং ডাবল কোটেশনের ভেতরে লিখতে হয়। এটা কোনো বড় সমস্যা নয় যতক্ষণ না আপনি আপনার প্রোগ্রামে একটি ডাবল কোটেশন অন্তর্ভুক্ত করতে চান। এটা একটি এরর ফেরত দেবে।

এই এরর রিজল্ভ করার পদ্ধতি হলো ব্যাকস্ল্যাশ (\) ক্যারেক্টার ব্যবহার করা। এটি স্ট্রিংয়ের যেকোনো ক্যারেক্টারকে যেটি তার তुरন্ত পরেই থাকে সেটিকে একটি স্পেশাল ক্যারেক্টারে রূপান্তর করে। এই উদাহরণটি বিবেচনা করুন:

String statement = "Your order for \"Chocolate Chip Cookie x2\" was processed.";

এই স্ট্রিং আমাদের প্রোগ্রামে কাজ করবে কারণ আমরা আমাদের স্ট্রিংয়ের প্রতিটি ডাবল কোটেশনের আগে একটি ব্যাকস্ল্যাশ নির্দিষ্ট করেছি। এই স্ট্রিং ফেরত দেবে: Your order for Chocolate Chip Cookie x2 was processed.।

এখন আমাদের আরেকটি সমস্যা: আপনি যদি আপনার স্ট্রিংয়ে একটি ব্যাকস্ল্যাশ ব্যবহার করতে চান? এটা করতে, আপনি দুটি ব্যাকস্ল্যাশ পাশাপাশি লিখতে পারেন:

String order_reference = "Your order reference is 202\\303."

এটি ফেরত দেবে স্ট্রিং: Your order reference is 202\303."

জাভা-তে অন্যান্য অনেক স্পেশাল ক্যারেক্টার রয়েছে যেগুলো আপনি ব্যবহার করতে পারেন। সবচেয়ে উপযোগী যেটি আপনি সামনা করবেন সেটি হলো \n, বা নিউ লাইন। এই ক্যারেক্টার একটি স্ট্রিংয়ে নতুন লাইন তৈরি করে:

String order_reference = "Your order reference is: \n 202\\303."

আমাদের স্ট্রিং সমান: Your order reference is: 202\303

স্ট্রিং দুটি লাইনে ভাগ হয়েছে কারণ আমরা আমাদের স্ট্রিংয়ের is: অংশের পর নিউ লাইন ক্যারেক্টার নির্দিষ্ট করেছি।

উপসংহার

স্ট্রিং আপনাকে আপনার প্রোগ্রামে টেক্সট-ভিত্তিক ডেটা নিয়ে কাজ করতে দেয়। একটি স্ট্রিং যেকোনো সংখ্যক ক্যারেক্টার ধারণ করতে পারে, কোনো ক্যারেক্টার না থাকাও পারে।

indexOf() এবং equals() মতো স্ট্রিং মেথড ব্যবহার করে, আপনি জাভা-তে একটি স্ট্রিংয়ের কন্টেন্ট ম্যানিপুলেট করতে পারেন। এখন আপনি জাভা-তে স্ট্রিং এক্সপার্টের মতো ব্যবহার করতে পারবেন!

  1. অ্যানাগ্রাম সাবস্ট্রিং সার্চের জন্য জাভা প্রোগ্রাম

  2. জাভাতে ArrayList-এ স্ট্রিং খোঁজা (Search) কীভাবে করবেন?

  3. জাভাতে স্ট্রিং থেকে নির্দিষ্ট শব্দ খুঁজে বের করা

  4. জাভাতে স্ট্রিং ভ্যালিডেট করা (আলফাবেটের জন্য)