স্ট্রিং এবং ইন্টারপোলেশন (Strings & Interpolation)
স্ট্রিং সবখানেই থাকে (Strings Are Everywhere)
প্রায় প্রতিটি প্রোগ্রামকেই বিভিন্ন ধরনের টেক্সট বা লেখা নিয়ে কাজ করতে হয় — যেমন নাম, মেসেজ, পাসওয়ার্ড, ইউআরএল (URLs) কিংবা ইমেইল। সি শার্পে (C#) এই টেক্সট বা লেখাগুলোকে string ভ্যারিয়েবলের ভেতরে রাখা হয়। একটি স্ট্রিং হলো মূলত অনেকগুলো ক্যারেক্টার বা অক্ষরের একটি চেইন (chain of characters), যাদেরকে একসাথে একটি সুতায় গাঁথা হয় (আর ঠিক এ কারণেই আক্ষরিক অর্থে একে "স্ট্রিং (string)" বলে ডাকা হয়)।
এখানে সবচেয়ে মজার বিষয়টি হলো: সি শার্পের (C#) স্ট্রিংগুলো হলো অপরিবর্তনশীল বা ইমমিউটেবল (immutable)। এর মানে হলো, একবার কোনো একটি স্ট্রিং তৈরি হয়ে গেলে আপনি আর সেটি পরিবর্তন করতে পারবেন না। প্রতিবার যখন আপনি কোনো স্ট্রিংকে "মডিফাই বা পরিবর্তন (modify)" করেন, তখন সি শার্প (C#) আসলে পেছনের দিকে বা আড়ালে সম্পূর্ণ নতুন আরেকটি স্ট্রিং তৈরি করে নেয়। এটি অনেকটা কলম দিয়ে লেখার মতো ব্যাপার — আপনি একবার যা লিখে ফেলেছেন তা আর মুছতে পারবেন না, বরং আপনাকে লেখার জন্য একটি নতুন পৃষ্ঠাই নিতে হবে।
স্ট্রিংয়ের বেসিক এবং ইন্টারপোলেশন (String Basics & Interpolation)
স্ট্রিংয়ের মেথডসমূহ (String Methods — Your Toolbox)
স্ট্রিংয়ের সাথে বেশ কিছু অত্যন্ত কার্যকরী মেথড যুক্ত থাকে। এর প্রতিটি মেথডকে একটি আলাদা টুল (tool) বা হাতিয়ার হিসেবে ভাবতে পারেন:
.Length— লেখার ভেতর মোট কতগুলো অক্ষর আছে (এটি একটি প্রোপার্টি (property), তাই এর শেষে কোনো প্যারেন্থেসিস বা প্রথম বন্ধনী থাকে না).ToUpper()/.ToLower()— কোনো লেখাকে বড় হাতের (shout) অথবা ছোট হাতের (whisper) করে দেয়.Trim()— কোনো লেখার শুরু এবং শেষ থেকে বাড়তি স্পেস বা হোয়াইটস্পেস (whitespace) মুছে ফেলে (ইউজারের ইনপুট নেওয়ার ক্ষেত্রে এটি দারুণ কাজ করে).Contains("text")— লেখার ভেতর নির্দিষ্ট এই কথাটি রয়েছে কিনা, সেটির উত্তর দেয়.StartsWith()/.EndsWith()— কোনো লেখার শুরু অথবা শেষ অংশ চেক করে বা পরীক্ষা করে.Substring(start, length)— একটি স্ট্রিংয়ের মাঝখান থেকে নির্দিষ্ট কোনো অংশ কেটে বের করে আনে.Replace(old, new)— কোনো লেখাকে অন্য কিছু দিয়ে বদলে দেয়.Split(separator)— একটি স্ট্রিংকে ভেঙে অ্যারে (array) তৈরি করে.IndexOf("text")— নির্দিষ্ট কোনো লেখা ঠিক কোথায় আছে তা খুঁজে বের করে (যদি খুঁজে না পায় তবে -1 রিটার্ন করে)
সব সময় মনে রাখবেন: এই মেথডগুলো কিন্তু আসল বা অরিজিনাল স্ট্রিংকে পরিবর্তন করে না। বরং তারা সম্পূর্ণ নতুন একটি স্ট্রিং রিটার্ন করে। তাই আপনার কাজ হবে সেই ফলাফলটি সেভ করে রাখা!
ব্যাবহারিক ক্ষেত্রে স্ট্রিংয়ের মেথডসমূহ (String Methods in Action)
StringBuilder — যখন গতি আর পারফরম্যান্সই আসল (StringBuilder — When Speed Matters)
আপনার কি মনে আছে যে, স্ট্রিং আসলে অপরিবর্তনশীল বা ইমমিউটেবল (immutable)? এর মানে হলো, প্রতিবার যখন আপনি লুপের (loop) ভেতর result += "something" ব্যবহার করেন, সি শার্প (C#) প্রতিবারই একটি করে নতুন স্ট্রিং তৈরি করে এবং পুরোনোটিকে ফেলে দেয়। আপনি যদি এই কাজ ১০,০০০ বার করেন, তবে আপনার প্রোগ্রামটি অনেক বেশি ধীরগতির (slow) হয়ে যাবে।
এই ক্ষেত্রে StringBuilder অনেকটা একটি হোয়াইটবোর্ডের (whiteboard) মতো কাজ করে — আপনি চাইলে প্রতিবার নতুন বোর্ড না এনে একই বোর্ডের ওপর বারবার লিখতে এবং মুছতে পারবেন। যখন আপনাকে একটু একটু করে অনেক বড় একটি স্ট্রিং তৈরি করতে হবে, তখন এই পদ্ধতিটি ব্যবহার করবেন।
পারফরম্যান্সের জন্য StringBuilder (StringBuilder for Performance)
$ ব্যবহার করে স্ট্রিং ইন্টারপোলেশন (string interpolation) করাটাই সবচেয়ে ভালো এবং এটি পড়তেও অনেক বেশি সহজ হয়।ছোট কুইজ
পড়া চালিয়ে যান