【ITOO】---StringBuilder对象

    记得在学习软考的时候对String对象有过大致的了解!每次使用String类中的方法时,都要在内存中创建一个新的字符串对象,并给它分配新的空间才行!这样的话就对系统造成了很大的开销!
    所以就有了我接下来要讲解的StringBuilder类,我们可以用它来修改字符串而不创建新的对象。只有利用StringBuilder串联字符串操作的时候因为StringBuilder对象缓冲区太小而无法容纳新数据时才会重新分配内存!因此 当要拼接字符串的时候这个类可以帮助我们很大的提高性能!

   有几种可以修改StringBuilder的内容的方法:
 

    其中最常用的就是这个Append方法,用以拼接字符串,常用在拼接SQL语句上面!它加上case...when语句就可以用以拼接SQL语句,我在一篇博客中已经写到!http://blog.csdn.net/lishaoran369/article/details/50409397

.Append方法:可以用StringBuilder.Append(参数)进行重载:
  【ITOO】---StringBuilder对象_第1张图片

.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语句的时候要注意空格的位置,要不然都不知道自己错在哪里!!

 

你可能感兴趣的:(【ITOO】---StringBuilder对象)