C#-StringBuilder
string:特殊的引用
每次重新赋值或者拼接时会分配新的内存空间,如果一个字符串经常改变会非常浪费空间。
StringBuilder:C#提供的一个用于处理字符串的公共类
修改字符串而不创建新的对象,需要频繁修改和拼接的字符串可以使用它,可以提升性能。
产生垃圾的频率减少
一:使用
引用命名空间
using System.Text;
声明
StringBuilder str = new StringBuilder("123123123");
//指定容量大小。如果太多房间不用,也是浪费
StringBuilder str = new StringBuilder("123123123",100);
容量,字符长度
StringBuilder存在一个容量的问题,每次往里面增加时,会自动扩容
容量:str.Capacity
长度:str.Length
增
str.Append("4444");
str.AppendFormat("{0}{1}", 100, 999);
插入:str.Insert(0, "小明");
删、清空
str.Remove();
str.Clear();
查、改、替换
Console.WriteLine(str[1]);
Console.WriteLine(str);
str[0]='A';//StringBuilder的索引器可以修改 //string的索引器是只读的
str.Replace("1", "明");
StringBuilder的索引器可以修改,string的索引器是只读的
对StringBuilder重新赋值
//先清空再拼接 可以避免产生垃圾
str.Clear();
str.Append("123");
比较
//判断StringBuilder是否和某一个字符串相等
if( str.Equals("12312") )
{Console.WriteLine("相等");
}
//String类型判断相等
//str1 == str2;
StringBuilder没有查看位置的方法
String中的方法是:str.IndexOf();
二:string和stringBuilder的区别
-
string相对stringbuilder 更容易产生垃圾 每次修改拼接都会产生垃圾
需要使用string独特的一些方法来处理一些特殊逻辑时可以使用string
-
string相对stringbuilder 更加灵活 因为它提供了更多的方法供使用
需要频繁修改拼接的字符串可以使用stringbuilder