StringBuilder是一个用于处理字符串的公共类,相比于String其优势在于避免在对字符串操作时频繁产生新对象而造成GC,影响程序性能。使用时需要引用System.Text命名空间。且在利用StringBuilder声明字符串对象时,需要new出对应的对象。
StringBuilder本质仍然是字符数组,但在实例化时会预先留存一定空间,这样就会避免在添加字符时触发内存迁移,同样提升了性能。当添加的内容超过预留空间时,默认会将空间大小*2来进行扩容。
接下来我们便可以对该对象进行一系列操作了,且操作时是直接对原字符串进行修改而非产生新的字符串。
cs
using System.Data;
using System.Text;
namespace ConsoleApp17
{
class Program
{
static void Main(string[] args)
{
StringBuilder sb = new StringBuilder("abcdefg");
Console.WriteLine(sb);
//获取当前总空间长度
Console.WriteLine(sb.Capacity);
//获取当前字符串的实际长度
Console.WriteLine(sb.Length);
#region 增删查改
//增加
sb.Append("hi");
Console.WriteLine(sb);
sb.AppendFormat("{0}", "j");
Console.WriteLine(sb);
//插入
sb.Insert(10, "k");
Console.WriteLine(sb);
//删除
sb.Remove(7, 10);
Console.WriteLine(sb);
//清空
sb.Clear();
Console.WriteLine(sb);
//查找
StringBuilder sb2 = new StringBuilder("abcdefg");
Console.WriteLine(sb2[0]);
//修改
sb2[0] = 'A';
Console.WriteLine(sb2);
//替换
sb2.Replace("b", "B");
Console.WriteLine(sb2);
//对StringBuilder类的对象重新赋值,需要结合Clear()与Append()使用
sb2.Clear();
sb2.Append("abcdefg");
//判断引用类型是否等同,采用Equals()方法
bool judge = sb2.Equals("abc");
Console.WriteLine(judge);
#endregion
}
}
}