「笔记」字符串处理类C#中的StringBuilder类的常用方法

「笔记」字符串处理类C#中的StringBuilder类的常用方法

编码文章call10242025-02-01 3:40:1116A+A-

C#中的StringBuilder类的常用方法


字符串修改

string strText="Hello";//只读,第一次赋值
strtext += "World";//重新再分配一块内存空间
Console.WriteLine(strText);

上面的例子中,如果我们在第一次赋值的话,是在内存中开辟了一个空间进行存储;但当我们使用+=更改这个值的时候,并不是原来的内存空间Hello后面增加了内容,而是把两个值拼接到一起,在原有的内存空间进行修改,而是重新分配了一块内存重新来分配拼接后的内容。

介于此,就应运而生了一个字符串处理类StringBuilder类

using System.Text;//在类里面使用的时候,要先引用它,才可以使用StringBuilder

StringBuilder sb = new StringBuilder("abc");//使用构造方法赋初始值,进行分配空间
sb.Append("def");//追加或累加,不开辟新的内存空间
sb.Append("GHHHHHN");//继续追加

Console.WriteLine(sb);

这个是跟String的区别,一个是不断开辟新空间,一个是原有的基础之上进行追加。但次数不是特别多的时候,还是使用String的方式吧,毕竟String更简练一些,在用的时候。

在什么时候用呢?不断重复,反复添加,成千上万上百万……等次数后,就可以使用了。

从上图可以看到,Append是在结尾的地方进行追加。还有Insert和Remove方法。

sb.Insert(3, "CCC");//指定下标后进行插入字符串,第一个数字是下标,第二个值是字符串
sb.Remove(4, 2);//删除指定下标后相应数量的字符,第一个值是下标,第二个值是移除长度

什么时候使用呢?在需要不断重复地添加的时候,例如从表格或者文本文件中取出相应的数据,可能会有很多,这个时候就应该使用StringBuilder类来处理字符串。

List list = new List()//模拟几个数据库数据
{
new Student(){StuNo=1,StuName="张三"},
new Student(){StuNo=2,StuName="李四"},
new Student(){StuNo=3,StuName="王五"},
new Student(){StuNo=4,StuName="赵六"},
new Student(){StuNo=5,StuName="田七"},
};
string sql = @"insert into Student(stuNo,stuName)
values ";

foreach (Student item in list)
{
sql += $"({item.StuNo},'{item.StuName}')";
}

这样直接使用string定义的变量,就会开辟出来很多新的内存地址,如果很多数据的时候,会造成内存越占用越多。(怎么查看变量内存变化,在调试过程中,监视窗口,添加相应的变量查看即可。变量名前加上&符号)

我们把上面的处理改成StringBuilder类,每次处理的时候,就不会不断重新开辟新内存了。

StringBuilder sbSql = new StringBuilder("insert into Student(stuNo,stuName) values ");

foreach (Student item in list)
{
		sbSql.Append($"({item.StuNo},'{item.StuName}')");
}
点击这里复制本文地址 以上内容由文彬编程网整理呈现,请务必在转载分享时注明本文地址!如对内容有疑问,请联系我们,谢谢!
qrcode

文彬编程网 © All Rights Reserved.  蜀ICP备2024111239号-4