在我的《关于c#的一些小知识》里面我讲过string字符串内容不可变的知识。现在来讲一下StringBuilder的用法。
StringBuilder位于System.Text命名空间下,没有这个命名空间的自己加上。
一、声明
StringBuilder有三种声明方式:
1 StringBuilder jj = new StringBuilder("我蜀云泉是游戏王"); //第一种,直接加字符串内容
1 StringBuilder jj = new StringBuilder(10); //第2种,直接分配大小
1 StringBuilder jj = new StringBuilder("我蜀云泉是游戏王",10); //第3种,直接分配字符串和大小
二、StringBuilder和string的区别
比如最开始都让它们俩初始化为“蜀云泉”,然后加上字符串“喜欢写博客”
先来string的:
1 string s = "蜀云泉"; 2 s = s+"喜欢写博客";
上图看原理(虚线是第一步,实线是第二步):
好了,现在来看StringBuilder的:
1 StringBuilder vae=new StringBuilder("蜀云泉"); 2 vae.Append("喜欢写博客");
上图看原理(红色的字是第一步,黑色的是第二步):
总结:string只要增删改就是重新申请一块新的存储空间,但是StringBuilder不是,它是在原有的存储空间上继续存储东西,直到它的存储空间满了之后它会重新申请一块是原有空间大小二倍的空间来存储,所以当你的字符串需要频繁的改动时,用StringBuilder比用string更好。至于更深入的东西,大家自己去百度吧,我只起到一个稍微了解的作用。
三、StringBuilder的一些方法
下面来介绍一些方法:
//a是int类型的变量,b是字符串类型的变量 vae.Append("b"); vae.Insert(a,"b"); vae.Remove(a,a); vae.Replace("b","b");
这是几个比较常用的,下面我们来详细介绍一下,首先我们来个控制台
1 namespace stringbuilder 2 { 3 class Program 4 { 5 static void Main(string[] args) 6 { 7 StringBuilder vae = new StringBuilder("蜀云泉是游戏王"); 8 Console.WriteLine(vae); 9 Console.ReadKey(); 10 } 11 } 12 }
这里输出的内容是: 蜀云泉是游戏王
Append方法:作用是添加字符串,上面已经有一个例子了,不讲了。
Insert方法:在某个位置插入一段字符串,例如
1 namespace stringbuilder 2 { 3 class Program 4 { 5 static void Main(string[] args) 6 { 7 StringBuilder vae = new StringBuilder("蜀云泉是游戏王"); 8 vae.Insert(0,"我爱的"); 9 Console.WriteLine(vae); 10 Console.ReadKey(); 11 } 12 } 13 }
这里输出的内容是: 我爱的蜀云泉是游戏王
Remove方法:在某个位置删除多少个字符,例如:
1 namespace stringbuilder 2 { 3 class Program 4 { 5 static void Main(string[] args) 6 { 7 StringBuilder vae = new StringBuilder("蜀云泉是游戏王"); 8 vae.Remove(0,4); 9 Console.WriteLine(vae); 10 Console.ReadKey(); 11 } 12 } 13 }
这里输出的内容是: 游戏王
Replace方法:把某段字符转换成某段字符,例如:
1 namespace stringbuilder 2 { 3 class Program 4 { 5 static void Main(string[] args) 6 { 7 StringBuilder vae = new StringBuilder("蜀云泉是游戏王"); 8 vae.Replace("游戏王","个帅哥"); 9 Console.WriteLine(vae); 10 Console.ReadKey(); 11 } 12 } 13 }
这里输出的内容是: 蜀云泉是个帅哥