কম্পিউটার

C# এ স্ট্রিংবিল্ডার ক্লাসের উদ্দেশ্য কী?


C# এ, স্ট্রিংগুলি অপরিবর্তনীয়। তার মানে আপনি একটি স্ট্রিং তৈরি হয়ে গেলে তা পরিবর্তন করতে পারবেন না। স্ট্রিং-এ যেকোনো পরিবর্তন একটি নতুন স্ট্রিং প্রদান করে যাতে সংশোধন থাকে, মূল স্ট্রিংটি অক্ষত থাকে৷

string word = "aaabbbccc";
string newWord = word.Replace('b', 'd');
Console.WriteLine(word); // prints aaabbbccc
Console.WriteLine(newWord); // prints aaadddccc

স্ট্রিংবিল্ডার ক্লাস একটি স্ট্রিং-এর মতো বস্তুর প্রতিনিধিত্ব করে যা সংশোধন করা যেতে পারে, যেমন অক্ষরের একটি পরিবর্তনযোগ্য স্ট্রিং। এটি স্ট্রিং টাইপের থেকে ভিন্নভাবে প্রয়োগ করা হয়েছে, যা অক্ষরের একটি অপরিবর্তনীয় স্ট্রিং প্রতিনিধিত্ব করে।

একটি স্ট্রিং অবজেক্ট পরিবর্তন করার ফলে একটি অনুলিপি তৈরি হয়, বারবার স্ট্রিং অবজেক্ট পরিবর্তন করার ফলে একটি কর্মক্ষমতা জরিমানা হতে পারে। ছোট পুনরাবৃত্তির জন্য এটি নগণ্য, কিন্তু বিশাল লুপের জন্য তা উল্লেখযোগ্য হতে পারে। স্ট্রিংবিল্ডার অক্ষর যোগ, অপসারণ, প্রতিস্থাপন বা সন্নিবেশ করে একটি স্ট্রিং পরিবর্তন করার জন্য একটি কার্যকর বিকল্প প্রদান করে৷

স্ট্রিংবিল্ডার অক্ষর ধরে রাখার জন্য একটি অভ্যন্তরীণ বাফার বজায় রাখে। যদি বাফারে স্থান পাওয়া যায় তবে এটি নতুন ডেটা যুক্ত করে। অন্যথায়, এটি একটি নতুন বাফার তৈরি করে, নতুন বাফারে পুরানো ডেটা কপি করে এবং তারপরে ডেটা যুক্ত করে৷

var sb = new StringBuilder();
for (int i = 0; i < 10; i++){
   sb.Append("a");
}
Console.WriteLine(sb.ToString()); // prints aaaaaaaaaa

এখানে একটি StringBuilder অবজেক্ট তৈরি করার বিভিন্ন উপায় রয়েছে৷

// Initialize a new instance of StringBuilder
var sb1 = new StringBuilder();

// Initialize a new instance of StringBuilder using the given capacity
var sb2 = new StringBuilder(capacity: 10);

// Initialize a new instance of StringBuilder with the given string
var sb3 = new StringBuilder(value: "Hello World");

// Initialize a new instance of StringBuilder with the given capacity and the maximum capacity it can grow to
var sb4 = new StringBuilder(capacity: 20, maxCapacity: 10);

// Initialize a new instance of StringBuilder with the given string and capacity
var sb5 = new StringBuilder(value: "Hello", capacity: 20);

// Initialize a new instance of StringBuilder from the given substring and capacity
var sb6 = new StringBuilder(value: "Hello World", startIndex: 0, length: 5, capacity: 20);

StringBuilder ক্লাসে একটি দৈর্ঘ্যের বৈশিষ্ট্য রয়েছে যা বর্তমানে অবজেক্টের অক্ষরের সংখ্যা নির্দেশ করে। বস্তুতে আরও অক্ষর যোগ করার পরে, এটির ধারণক্ষমতা না পৌঁছানো পর্যন্ত এর দৈর্ঘ্য বৃদ্ধি পায়, যা বর্তমানে বস্তুটিতে থাকা সর্বোচ্চ সংখ্যক অক্ষর নির্ধারণ করে।

যদি যোগ করা অক্ষরের সংখ্যা দৈর্ঘ্যকে তার বর্তমান ক্ষমতা অতিক্রম করে, ক্লাসটি নতুন মেমরি বরাদ্দ করে, তার ক্ষমতাকে জোড়া দেয়। তারপর নতুন অক্ষরগুলি বস্তুতে যোগ করা হয়, এবং এর দৈর্ঘ্য বৈশিষ্ট্য সমন্বয় করা হয়।

স্ট্রিংবিল্ডার গতিশীলভাবে অতিরিক্ত মেমরি যোগ করতে থাকে যতক্ষণ না এটি MaxCapacity সম্পত্তির মান পৌঁছায়। এর পরে, বস্তুর জন্য আর কোনো মেমরি বরাদ্দ করা যাবে না। আপনি যদি অবজেক্টে আরও ডেটা যোগ করার চেষ্টা করেন তবে এটি একটি ArgumentOutOfRangeException বা একটি OutOfMemoryException ব্যতিক্রম নিক্ষেপ করে৷

স্ট্রিংবিল্ডার নিম্নলিখিত পদ্ধতিগুলি প্রদান করে যা স্ট্রিংগুলিকে পরিবর্তন করা সহজ করে তোলে৷

  • সংযুক্ত করুন − এই উদাহরণে একটি নির্দিষ্ট বস্তুর স্ট্রিং উপস্থাপনা যুক্ত করে।

  • সংযুক্ত বিন্যাস − এই উদাহরণে একটি যৌগিক বিন্যাস স্ট্রিং প্রক্রিয়াকরণের মাধ্যমে প্রত্যাবর্তিত স্ট্রিং যুক্ত করে, যেখানে শূন্য বা তার বেশি বিন্যাস আইটেম রয়েছে। প্রতিটি বিন্যাস আইটেম একটি সংশ্লিষ্ট বস্তু আর্গুমেন্টের স্ট্রিং উপস্থাপনা দ্বারা প্রতিস্থাপিত হয়।

  • যোগ করুন − প্রতিটি সদস্যের মধ্যে নির্দিষ্ট বিভাজক ব্যবহার করে বস্তুর প্রদত্ত অ্যারের উপাদানগুলির স্ট্রিং উপস্থাপনাগুলিকে সংযুক্ত করে, তারপর স্ট্রিং বিল্ডারের বর্তমান উদাহরণে ফলাফল যুক্ত করে৷

  • অ্যাপেন্ডলাইন − বর্তমান StringBuilder অবজেক্টের শেষে ডিফল্ট লাইন টার্মিনেটর যুক্ত করে।

  • সাফ করুন৷ − বর্তমান স্ট্রিংবিল্ডার ইন্সট্যান্স থেকে সমস্ত অক্ষর সরিয়ে দেয়৷

  • কপিটু − অক্ষরগুলিকে একটি গন্তব্য চার স্প্যান বা চার অ্যারেতে অনুলিপি করে৷

  • ক্যাপাসিটি নিশ্চিত করুন − নিশ্চিত করে যে StringBuilder-এর এই উদাহরণের ক্ষমতা অন্তত নির্দিষ্ট মান।

  • সমান − যদি এই দৃষ্টান্ত এবং প্রদত্ত দৃষ্টান্তে সমান স্ট্রিং, ক্যাপাসিটি, এবং ম্যাক্স ক্যাপাসিটি মান থাকে তাহলে সত্য দেখায়৷

  • GetChunks − একটি বস্তু ফেরত দেয় যা অক্ষরের অংশগুলির মাধ্যমে পুনরাবৃত্তি করতে ব্যবহার করা যেতে পারে৷

  • ঢোকান − একটি নির্দিষ্ট অক্ষর অবস্থানে এই উদাহরণে একটি নির্দিষ্ট বস্তুর স্ট্রিং উপস্থাপনা সন্নিবেশ করান৷

  • সরান৷ − এই উদাহরণ থেকে অক্ষরের নির্দিষ্ট পরিসর সরিয়ে দেয়।

  • প্রতিস্থাপন করুন − এই উদাহরণে একটি নির্দিষ্ট অক্ষর বা স্ট্রিংয়ের সমস্ত ঘটনাকে অন্য নির্দিষ্ট অক্ষর বা স্ট্রিং দিয়ে প্রতিস্থাপন করে৷

  • ToString − বর্তমান দৃষ্টান্তকে একটি স্ট্রিং-এ রূপান্তরিত করে।

উদাহরণ

using System;
using System.Text;
class Program{
   static void Main(string[] args){
      string word = "aaabbbccc";
      string newWord = word.Replace('b', 'd');
      Console.WriteLine(word); // prints aaabbbccc
      Console.WriteLine(newWord); // prints aaadddccc
      var sb = new StringBuilder();
      for (int i = 0; i < 10; i++){
         sb.Append("a");
      }
      Console.WriteLine(sb.ToString()); // prints aaaaaaaaaa

      // Initialize a new instance of StringBuilder
      var sb1 = new StringBuilder();

      // Initialize a new instance of StringBuilder using the given capacity
      var sb2 = new StringBuilder(capacity: 10);
     
      // Initialize a new instance of StringBuilder with the given string
      var sb3 = new StringBuilder(value: "Hello World");
      // Initialize a new instance of StringBuilder with the given capacity and the    maximum capacity it can grow to
      var sb4 = new StringBuilder(capacity: 20, maxCapacity: 50);
      // Initialize a new instance of StringBuilder with the given string and capacity
      var sb5 = new StringBuilder(value: "Hello", capacity: 20);

      // Initialize a new instance of StringBuilder from the given substring and capacity
      var sb6 = new StringBuilder(value: "Hello World", startIndex: 0, length: 5, capacity: 20);
   }
}

আউটপুট

aaabbbccc
aaadddccc
aaaaaaaaaa

  1. C# এ স্ট্যাক ক্লাস কি?

  2. C# এ SortedList ক্লাস কি?

  3. C# এ ArrayList ক্লাস কি?

  4. জাভাতে প্রসেস ক্লাসের উদ্দেশ্য কী?