首頁  >  文章  >  後端開發  >  C# 中 StringBuilder 類別的用途是什麼?

C# 中 StringBuilder 類別的用途是什麼?

WBOY
WBOY轉載
2023-09-09 16:53:02935瀏覽

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 實例的容量至少為指定值。

  • 等於 − 如果此實例和提供的實例具有,則傳回 true相等的字串、Capacity 和 MaxCapacity 值。

  • GetChunks - 傳回可用來迭代字元區塊的物件。

  • Insert - 將指定物件的字串表示形式插入到此實例的指定字元位置。

  • 刪除 - 從此實例中刪除指定範圍的字元。

  • 替換 - 取代所有出現的指定字元或此實例中的字串與另一個指定的字元或字串。

  • ToString - 將目前實例轉換為字串。

範例

 現場示範

using System;
using System.Text;
class Program{
   static void Main(string[] args){
      string word = "aaabbbccc";
      string newWord = word.Replace(&#39;b&#39;, &#39;d&#39;);
      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

以上是C# 中 StringBuilder 類別的用途是什麼?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:tutorialspoint.com。如有侵權,請聯絡admin@php.cn刪除