Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> C#

C# में StringBuilder क्लास का उद्देश्य क्या है?


C# में, स्ट्रिंग्स अपरिवर्तनीय हैं। इसका मतलब है कि एक बार बनने के बाद आप स्ट्रिंग को संशोधित नहीं कर सकते। स्ट्रिंग में कोई भी संशोधन एक नई स्ट्रिंग लौटाता है जिसमें संशोधन होता है, मूल स्ट्रिंग को बरकरार रखते हुए।

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

StringBuilder क्लास एक स्ट्रिंग-जैसी ऑब्जेक्ट को दर्शाती है जिसे संशोधित किया जा सकता है, यानी वर्णों की एक परिवर्तनीय स्ट्रिंग। यह स्ट्रिंग प्रकार से अलग तरीके से लागू किया गया है, जो वर्णों की एक अपरिवर्तनीय स्ट्रिंग को दर्शाता है।

चूंकि स्ट्रिंग ऑब्जेक्ट को संशोधित करने से एक कॉपी बनती है, बार-बार स्ट्रिंग ऑब्जेक्ट्स को संशोधित करने से प्रदर्शन दंड हो सकता है। छोटे पुनरावृत्तियों के लिए यह नगण्य है, लेकिन विशाल लूप के लिए महत्वपूर्ण हो सकता है। StringBuilder वर्णों को जोड़कर, हटाकर, प्रतिस्थापित करके या सम्मिलित करके स्ट्रिंग को संशोधित करने का एक कुशल विकल्प प्रदान करता है।

StringBuilder वर्णों को रखने के लिए एक आंतरिक बफर रखता है। यदि बफर में जगह उपलब्ध है, तो यह नया डेटा जोड़ता है। अन्यथा, यह एक नया बफर बनाता है, पुराने डेटा को नए बफर में कॉपी करता है, और फिर डेटा जोड़ता है।

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 क्लास में एक Length प्रॉपर्टी होती है जो ऑब्जेक्ट में वर्तमान में मौजूद वर्णों की संख्या दर्शाती है। ऑब्जेक्ट में अधिक वर्ण जोड़ने पर, इसकी लंबाई बढ़ती है जब तक कि यह अपनी क्षमता तक नहीं पहुंच जाती, जो ऑब्जेक्ट द्वारा वर्तमान में समाहित किए जा सकने वाले वर्णों की अधिकतम संख्या को परिभाषित करती है।

यदि जोड़े गए वर्णों की संख्या के कारण लंबाई इसकी वर्तमान क्षमता से अधिक हो जाती है, तो क्लास नई मेमोरी आवंटित करती है, इसकी क्षमता को दोगुना करती है। फिर नए वर्ण ऑब्जेक्ट में जोड़े जाते हैं, और इसकी Length प्रॉपर्टी समायोजित की जाती है।

StringBuilder डायनामिक रूप से अतिरिक्त मेमोरी जोड़ता रहता है जब तक कि यह MaxCapacity प्रॉपर्टी के मान तक नहीं पहुंच जाता। उसके बाद, ऑब्जेक्ट के लिए कोई और मेमोरी आवंटित नहीं की जा सकती। यदि आप ऑब्जेक्ट में अधिक डेटा जोड़ने का प्रयास करते हैं, तो यह या तो ArgumentOutOfRangeException या OutOfMemoryException फेंकता है।

StringBuilder निम्नलिखित विधियां प्रदान करता है जो स्ट्रिंग्स को संशोधित करना आसान बनाती हैं।

  • Append − इस इंस्टेंस में एक निर्दिष्ट ऑब्जेक्ट के स्ट्रिंग प्रतिनिधित्व को जोड़ता है।

  • AppendFormat − एक कम्पोजिट फॉर्मेट स्ट्रिंग को प्रोसेस करके लौटाई गई स्ट्रिंग को जोड़ता है, जिसमें शून्य या अधिक फॉर्मेट आइटम होते हैं, इस इंस्टेंस में। प्रत्येक फॉर्मेट आइटम को एक संबंधित ऑब्जेक्ट आर्गुमेंट के स्ट्रिंग प्रतिनिधित्व द्वारा प्रतिस्थापित किया जाता है।

  • AppendJoin − ऑब्जेक्ट्स की प्रदान की गई सरणी में तत्वों के स्ट्रिंग प्रतिनिधित्व को जोड़ता है, प्रत्येक सदस्य के बीच निर्दिष्ट सेपरेटर का उपयोग करके, फिर परिणाम को स्ट्रिंग बिल्डर के वर्तमान इंस्टेंस में जोड़ता है।

  • AppendLine − वर्तमान StringBuilder ऑब्जेक्ट के अंत में डिफ़ॉल्ट लाइन टर्मिनेटर जोड़ता है।

  • Clear − वर्तमान StringBuilder इंस्टेंस से सभी वर्णों को हटाता है।

  • CopyTo − वर्णों को डेस्टिनेशन चार स्पैन या चार ऐरे में कॉपी करता है।

  • EnsureCapacity − सुनिश्चित करता है कि StringBuilder के इस इंस्टेंस की क्षमता कम से कम निर्दिष्ट मान है।

  • Equals − यदि इस इंस्टेंस और प्रदान किए गए इंस्टेंस में समान स्ट्रिंग, क्षमता, और MaxCapacity मान हैं तो true लौटाता है।

  • GetChunks − एक ऑब्जेक्ट लौटाता है जिसका उपयोग वर्णों के टुकड़ों के माध्यम से पुनरावृति के लिए किया जा सकता है।

  • Insert − एक निर्दिष्ट ऑब्जेक्ट के स्ट्रिंग प्रतिनिधित्व को इस इंस्टेंस में एक निर्दिष्ट वर्ण स्थिति पर सम्मिलित करता है।

  • Remove − इस इंस्टेंस से निर्दिष्ट रेंज के वर्णों को हटाता है।

  • Replace − इस इंस्टेंस में एक निर्दिष्ट वर्ण या स्ट्रिंग की सभी घटनाओं को किसी अन्य निर्दिष्ट वर्ण या स्ट्रिंग से प्रतिस्थापित करता है।

  • 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# में SortedList क्लास क्या है?

    एक सॉर्टेड लिस्ट एक ऐरे और हैश टेबल का संयोजन है। इसमें आइटम्स की एक सूची होती है जिसे की या इंडेक्स का उपयोग करके एक्सेस किया जा सकता है। यदि आप इंडेक्स का उपयोग करके आइटम्स एक्सेस करते हैं, तो यह एक ArrayList है, और यदि आप की का उपयोग करके आइटम्स एक्सेस करते हैं, तो यह एक Hashtable है। आइटम्स का स

  1. - C# में ArrayList क्लास क्या है?

    C# में ArrayList क्लास ArrayList (System.Collections) एक नॉन-जेनेरिक डायनामिक एरे है जो किसी भी टाइप के ऑब्जेक्ट्स स्टोर कर सकता है। यह IList, ICollection, IEnumerable इम्प्लीमेंट करता है। नोट: आधुनिक C# में List<T> प्रीफर किया जाता है (टाइप सेफ्टी, प्रदर्शन)। ArrayList के मुख्य मेथड्स मेथड

  1. - Java में Process क्लास का उद्देश्य क्या है?

    java.lang.Process Object क्लास का एक सबक्लास है और यह उन प्रक्रियाओं का वर्णन कर सकता है जो Runtime क्लास के exec() मेथड द्वारा शुरू की जाती हैं। एक Process ऑब्जेक्ट प्रक्रिया को नियंत्रित करता है और इसके बारे में जानकारी प्राप्त करता है। Process क्लास एक एब्स्ट्रैक्ट क्लास है, इसलिए इसे इंस्टेंटिएट