摘要
字符串类型是不可变的。这意味着字符串一旦创建就无法更改。为了解决此问题,C# StringBuilder在System.Text命名空间中引入。StringBuilder不在内存中创建新对象,而是动态扩展内存以容纳修改后的字符串。
正文
StringBuilder 特点
- StringBuilder 是可变的。
- StringBuilder 追加多个字符串值时,执行速度比 string 快。
- 当您需要追加三个或四个以上的字符串时,请使用StringBuilder。
- 使用Append()方法向StringBuilder对象添加或追加字符串。
- 使用ToString()方法从StringBuilder对象中检索字符串
创建一个StringBuilder对象
//引用命名空间
using System.Text;
//稍后将追加字符串
StringBuilder sb1 = new StringBuilder();
//带字符串初使化
StringBuilder sb2 = new StringBuilder("Hello World!");
//指定初使化容量
StringBuilder sb3 = new StringBuilder(50);
//或
StringBuilder sb4 = new StringBuilder("Hello World!", 50);
注:C#在内存堆上按顺序分配最多50个空间。一旦达到指定容量,此容量将自动加倍。还可以使用capacity或length属性设置或检索 StringBuilder 对象的容量。
遍历一个StringBuilder
StringBuilder sb = new StringBuilder("Hello World!");
for (int i = 0; i < sb.Length; i++)
{
Console.Write(sb[i]+";");
}
image.png
StringBuilder 添加/追加字符串
StringBuilder sb = new StringBuilder();
for (int i = 0; i < 10000; i++)
{
sb.Append(i.ToString());
}
sb.AppendLine("最后一行");
for (int i = 0; i < sb.Length; i++)
{
Console.Write(sb[i]);
}
image.png
将格式化的字符串追加到 StringBuilder
StringBuilder sbAmout = new StringBuilder("金额为 ");
sbAmout.AppendFormat("{0:C} ", 200);
Console.WriteLine(sbAmout);
image.png
将 String 插入 StringBuilder
StringBuilder sb = new StringBuilder("Hello World!");
sb.Insert(5, " C#");
Console.WriteLine(sb);
image.png
在StringBuilder中删除字符串
StringBuilder sb = new StringBuilder("Hello World!");
sb.Remove(6, 6);
Console.WriteLine(sb);
image.png
在StringBuilder中替换字符串
StringBuilder sb = new StringBuilder("Hello World!");
sb.Replace("World", "C#");
Console.WriteLine(sb);
注意:这个与String的Replace的区别大,String的Replace是替换后返回,这个是直接替换。
网友评论