C# String和StringBuilder的解释
字符串添加或删除不频繁用string,否则用StringBuilder
1 String a1 = "abc"; //分配固定的内存大小 2 a1+="def"; //创建新的内存分配a1,代价比较昂贵 3 4 5 StringBuilder sb = new StringBuilder(20); //指定分配大小 6 sb.Append('abc'); //分配到堆区 7 sb.Append('def'); //不会被销毁,而是直接追加到后面。
String和StringBuilder的区别
String声明之后内存大小不能修改,StringBuilder可以自由扩展大小(String分配在栈区,StringBuilder分配在堆区)
1 StringBuilder sb = new StringBuilder(5); 2 //指定分配大小,性能会得到提升。在达到容量之前,不会为自己重新分配空间。如果超过指定大小会按照当前大小倍增 3 sb.Append('china'); 4 sb.Capacity = 25; //另外,可以使用读/写Capacity属性来设置对象的最大长度。
Append方法
StringBuilder sb = new StringBuilder("Hello World!"); sb.Append(" What a beautiful day."); Console.WriteLine(sb); //结果:Hello World! What a beautiful day.
AppendFormat 方法
int MyInt = 25; StringBuilder sb = new StringBuilder("Your total is "); sb.AppendFormat("{0:C} ", MyInt); Console.WriteLine(sb); //结果:Your total is $25.00
Insert方法
//以下示例使用此方法将一个单词插入到StringBuilder的第六个位置。 StringBuilder sb = new StringBuilder("Hello World!"); sb.Insert(6,"Beautiful "); Console.WriteLine(sb); //结果:Hello Beautiful World!
Remove方法
//以下示例使用Remove方法缩短StringBuilder。 StringBuilder sb = new StringBuilder("Hello World!"); sb.Remove(5,7); Console.WriteLine(sb); //结果:Hello
Replace方法
//以下示例使用Replace方法来搜索StringBuilder对象,查找所有的感叹号字符(!),并用问号字符(?)来替换它们。 StringBuilder sb = new StringBuilder("Hello World!"); sb.Replace('!', '?'); Console.WriteLine(sb); //结果:Hello World?