📜  C#中的StringBuilder

📅  最后修改于: 2021-05-29 23:28:06             🧑  作者: Mango

C# StringBuilder与Java StringBuilder相似。字符串对象是不可变的,即一旦创建字符串就不能更改。每次使用System.String类的任何方法时,都会在内存中创建一个新的字符串对象。例如,字符串“ GeeksForGeeks”占用了堆中的内存,现在,通过将初始字符串“ GeeksForGeeks ”更改为“ GFG ”,将在内存堆上创建一个新的字符串对象,而不是在相同的内存位置修改初始字符串。在需要对字符串进行重复修改的情况下,我们需要StringBuilder类。为避免字符串替换,在初始字符串C#中添加,删除或插入新字符串,C#引入了StringBuilder概念。 StringBuilder是一个动态对象。它不会在内存中创建新对象,而是动态扩展所需的内存以容纳修改后的字符串或新字符串。

StringBuilder的声明和初始化

可以使用与类相同的方式声明和初始化StringBuilder,

StringBuilder s = new StringBuilder();
            
or

StringBuilder s = new StringBuilder("GeeksforGeeks");

“ s”StringBuilder类的对象。另外,我们可以将字符串值(此处为“ GeeksforGeeks”)作为参数传递给StringBuilder的构造函数。

定义StringBuilder的容量

虽然StringBuilder的是一个动态的对象,它允许您以扩展其封装在字符串中的字符数,你可以指定字符,它可以容纳的最大数量的值。此值称为StringBuilder对象的容量。

StringBuilder s = new StringBuilder(20);

or

StringBuilder s = new StringBuilder("GeeksForGeeks", 20);

这里,

  • 在第一条语句中,我们将整数值作为参数传递给构造函数。这是可以容纳字符串的最大字符容量。
  • 在第二个发言中,我们通过字符串值与整数值(即字符的最大容量的字符串可以容纳)作为参数构造函数。

StringBuilder类的重要方法:

  • 追加(字符串值)
  • AppendFormat()
  • 插入(int索引,字符串值)
  • 删除(int开头,int长度)
  • 替换(旧值,新值| _val)

StringBuilder.Append(字符串值)方法

Append方法可用于将对象的字符串值添加或附加到当前StringBuilder对象表示的字符串的末尾。 AppendLine()方法也属于此方法。此方法在字符串末尾添加换行符。

例子:

// C# program to demonstrate the 
// StringBuilder.Append(value) and
// StringBuilder.AppendLine(value) method
using System;
using System.Text;
  
class GFG {
  
    // Main Method
    public static void Main()
    {
  
        // "20" is capacity
        StringBuilder s = new StringBuilder("HELLO ", 20);
          
        s.Append("GFG");
  
        // after printing "GEEKS"
        // a new line append
        s.AppendLine("GEEKS");
          
        s.Append("GeeksForGeeks");
        Console.WriteLine(s);
    }
}
输出:
HELLO GFGGEEKS
GeeksForGeeks

StringBuilder.AppendFormat()

此方法用于将输入字符串格式化为指定的格式,然后附加它。此方法还将文本附加到StringBuilder对象的末尾。

// C# program to demonstrate the 
// StringBuilder.AppendFormat() method
using System;
using System.Text;
  
class GFG {
  
    // Main Method
    public static void Main()
    {
        StringBuilder s = new StringBuilder("Your total amount is ");
  
        // using the method
        s.AppendFormat("{0:C} ", 50);
  
        Console.WriteLine(s);
    }
}
输出:

Your total amount is ¤50.00

StringBuilder.Insert(int索引,字符串值)方法

此方法将字符串插入StringBuilder对象中的指定索引处。

例子:

// C# program to demonstrate the 
// StringBuilder.Insert(int index,
// string value) method
using System;
using System.Text;
  
class GFG {
  
    // Main Method
    public static void Main()
    {
  
        // "20" is capacity
        StringBuilder s = new StringBuilder("HELLO ", 20);
          
        // "GEEKS" insert after 6th index
        s.Insert(6, "GEEKS");
          
        Console.WriteLine(s);
    }
}
输出:
HELLO GEEKS

StringBuilder.Remove(int start,int length)方法

此方法从当前StringBuilder对象中删除指定数量的字符。删除过程从指定的索引开始,一直扩展到另一个指定的索引。

例子:

// C# program to demonstrate the 
// StringBuilder.Remove(int index,
// int length) method
using System;
using System.Text;
  
class GFG {
  
    // Main Method
    public static void Main()
    {
  
        // "20" is capacity
        StringBuilder s = new StringBuilder("GeeksForGeeks", 20);
  
        // remove starts from index 5
        // and remove happes 3 index 
        // after index 5
        s.Remove(5, 3);
          
        Console.WriteLine(s);
    }
}
输出:
GeeksGeeks

StringBuilder.Replace(old_val,new_val)方法

此方法用于将StringBuilder对象中的字符替换为另一个指定的字符。

例子:

// C# program to demonstrate the 
// StringBuilder.Replace(string old_val,
// string new_val) method
using System;
using System.Text;
  
class GFG {
  
    // Main Method
    public static void Main()
    {
  
        // "20" is capacity
        StringBuilder s = new StringBuilder("GFG Geeks ", 20);
          
        // Replace "GFG" with "Geeks For"
        s.Replace("GFG", "Geeks For");
  
        Console.WriteLine(s);
    }
}
输出:
Geeks For Geeks