StringBuilder概念
c#提供的一个用于处理字符串的公共类
主要解决的问题是
修改字符串而不创建新对象 ,需要频繁修改和拼接的字符串可以使用它,可以提升性能
使用前,需要引用命名空间。using System.Text;
也会产生垃圾,但比string要生成的频率少
cs
StringBuilder str = new StringBuilder("123123123");//也有给出容量参数的重载函数
Console.WriteLine(str);
它存在一个容量问题,每次往里增加时,会自动扩容 预先准备好一个空间存放。
获得容量
cs
Console.WriteLine(str.Capacity);
获得字符长度
cs
Console.WriteLine(str.Length);
增加
cs
str.Append("44");//往后面加东西
Console.WriteLine(str.Capacity);
Console.WriteLine(str.Length);
cs
str.AppendFormat("{0}{1}",100,333);//拼接增加
//此时超容量了,之前是16容量 就被当作 垃圾了
Console.WriteLine(str.Capacity);
Console.WriteLine(str.Length);
插入
cs
str.Insert(0, "shan");
Console.WriteLine(str);
删
cs
str.Remove(1,3);
Console.WriteLine(str);
清空
cs
str.Clear();
查
cs
Console.WriteLine(str[0]);
替换
cs
str.Replace("1","shan");
重新赋值StringBuilder
cs
str.Clear();
str.Append("123123");
Console.WriteLine(str);
判断StringBuilder和另一个字符串是否相等
cs
if (str.Equals("123123"))
{
Console.WriteLine("相等");
}
注意:
Append.AddFormat中第一个参数 "{0}{1}" 是 string 类型(格式字符串)。
第二个及之后的参数 100 和 333 是 int 类型(但会被当作 object 处理,因为 AppendFormat 重载的参数是 params object[])。
AppendFormat 内部会:
-
解析格式字符串,用提供的参数替换
{0}、{1}等占位符(调用参数的ToString()方法)。 -
将生成的最终字符串追加到当前
StringBuilder中。
所以 AppendFormat 加入的实质是 :经过格式化后的字符串(但它是通过参数动态生成的)。