记得在学习软考的时候对String对象有过大致的了解!每次使用String类中的方法时,都要在内存中创建一个新的字符串对象,并给它分配新的空间才行!这样的话就对系统造成了很大的开销!
所以就有了我接下来要讲解的StringBuilder类,我们可以用它来修改字符串而不创建新的对象。只有利用StringBuilder串联字符串操作的时候因为StringBuilder对象缓冲区太小而无法容纳新数据时才会重新分配内存!因此
当要拼接字符串的时候这个类可以帮助我们很大的提高性能!
有几种可以修改StringBuilder的内容的方法:
其中最常用的就是这个Append方法,用以拼接字符串,常用在拼接SQL语句上面!它加上case...when语句就可以用以拼接SQL语句,我在一篇博客中已经写到!http://blog.csdn.net/lishaoran369/article/details/50409397
.Append方法:可以用StringBuilder.Append(参数)进行重载:
.insert方法:将制定对象的字符串表示形式插入到此实例中的指定字符位置。
例如:
public StringBuilder Insert (
int index,
double value
)
StringBuilder如何用?
例如:拿拼接sql语句举例。
先实例化一个,然后用Append执行sql语句
StringBuilder Sql = new StringBuilder();
Sql.Append("select * from datatable1");
Sql.Append(" where Name='Erica'");
这三个语句相当于:
String sql="select * from datatable1 where Name='Erica'"
用在ITOO中:
自己新生系统需要一键分学号的时候,就需要按照配置的要求从库中查出数据然后拼接成字符串,所以就用到了Append。
代码如下:
//调用配置的接口,查询学号配置即拼接字符串的顺序,和拼接各部分的长度,返回list
int isuse = 1;
List<FreshConfigureManage.ViewModel.StuNumConfigViewModel> stuConfig = new List<FreshConfigureManage.ViewModel.StuNumConfigViewModel>();
stuConfig = stuConfiger.StuNumConfigIsUse(isuse);
#region 循环拼接学号 李少然 2016-1-27 17:19:09
//设置学号字符串,用到了StringBuilder对象
StringBuilder studentCode = new StringBuilder();
//循环stuConfig实体中的数据,
for (int i = 1; i <= stuConfig.Count; i++)
{
//根据配置的sort字段的顺序排列学号
string name = stuConfig.Find(s => s.Sort == i.ToString()).Name;
//查出组成学号的各部分的长度
int length = Convert.ToInt16(stuConfig.Find(s => s.Name == name).Length);
switch (name)
{
case "专业编码":
string stuMajor;
try
{
stuMajor = majorCode.Substring(0, length);
}
catch (Exception e)
{
stuMajor = majorCode;
}
studentCode.Append(stuMajor);
break;
case "学院编码":
string stuDepartment;
try
{
stuDepartment = departmentCode.Substring(0, length);
}
catch (Exception e)
{
stuDepartment = departmentCode;
}
studentCode.Append(stuDepartment);
break;
case "性别编码":
string stuSex = sexCode;
studentCode.Append(stuSex);
break;
case "专业层次编码":
string stuLevel;
try
{
stuLevel = leveCode.Substring(0, length);
}
catch (Exception e)
{
stuLevel = leveCode;
}
studentCode.Append(stuLevel);
break;
case "班级编码":
string stuClass;
try
{
stuClass = classCode.Substring(0, length);
}
catch (Exception e)
{
stuClass = classCode;
}
studentCode.Append(stuClass);
break;
case "入学年份编码":
string stuGrade;
if (length == 4)
{
stuGrade = gradeCode.Substring(length - 2, length);
}
else
{
stuGrade = gradeCode.Substring(0, length);
}
studentCode.Append(stuGrade);
break;
default:
break;
}
}
//将学号后三位拼接到字符串上
studentCode.Append(code);
#endregion
这样就拼接成了学号的字符串了!
小结:使用拼接SQL语句的时候要注意空格的位置,要不然都不知道自己错在哪里!!