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