StringBuilder使用小结

    StringBuilder:一个可变的字符序列。此类提供一个与 StringBuffer 兼容的 API,但不保证同步。该类被设计用作 StringBuffer 的一个简易替换,用在字符串缓冲区被单个线程使用的时候。

    StringBuilderStringBuffer在实现中更快,在StringBuilder上主要操作的是append insert方法。将给定的数据转换成字符串,将字符串的字符添加或插入到字符串生成器中。append 方法始终将这些字符添加到生成器的末端;而insert 方法则在指定的点添加字符。当在一个循环中将许多字符串连接在一起时,使用 StringBuilder 类可以提升性能


StringBuilder使用

    引用System.Text;

    StringBuilder strSql = new StringBuilder();

    可以使用读/写 Capacity 属性来设置对象的最大长度。strSql.Capacity = 10;


常用的方法:

    Append方法:将文本或对象的字符串表示形式添加到由当前 StringBuilder 对象表示的字符串的结尾处。

    一个更新的sql语句。它的效果和一条sql语句是一样的。

        /// <summary>
        /// 更新一条数据,上传述职报告等信息;-2015年12月26日范晓权修改;
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        public bool UpdateWord(EvaluationSystem.Model.CadresRateEntity model)
        {
            StringBuilder strSql = new StringBuilder();
            strSql.Append("update T_CadresRate set ");
            strSql.Append("CadresName =@CadresName,");
            strSql.Append("UnitClass = @UnitClass,");
            strSql.Append("UnitName = @UnitName,");
            strSql.Append("Year= @Year,");
            strSql.Append("ReportName=@ReportName,");
            strSql.Append("ReportAdress = @ReportAdress,");
            strSql.Append("AssessmentResult = @AssessmentResult,");
            strSql.Append("Punishment = @Punishment,");
            strSql.Append("UserName =@UserName,");
            strSql.Append("Status=@Status");
            strSql.Append(" where CadresID=@CadresID");
            SqlParameter[] parameters = {
                    new SqlParameter("@CadresName", SqlDbType.Text ),
                    new SqlParameter("@UnitClass", SqlDbType.Text ),
                    new SqlParameter("@UnitName",SqlDbType.VarChar,100),
                    new SqlParameter("@Year",SqlDbType.VarChar,50),                   
                    new SqlParameter("@ReportName",SqlDbType.VarChar,100),
                    new SqlParameter("@ReportAdress",SqlDbType.Text),
                    new SqlParameter("@AssessmentResult",SqlDbType.VarChar,50),
                    new SqlParameter("@Punishment",SqlDbType.Text),
                    new SqlParameter("@UserName",SqlDbType.VarChar,50),
                    new SqlParameter("@Status",SqlDbType.VarChar,50),
                    new SqlParameter("@CadresID",SqlDbType.VarChar,100)};            
            parameters[0].Value = model.CadresName;
            parameters[1].Value = model.UnitClass;
            parameters[2].Value = model.UnitName;
            parameters[3].Value = model.Year;
            parameters[4].Value = model.ReportName;
            parameters[5].Value = model.ReportAdress;
            parameters[6].Value = model.AssessmentResult;
            parameters[7].Value = model.Punishment;
            parameters[8].Value = model.UserName;
            parameters[9].Value = model.Status;
            parameters[10].Value = model.CadresID;
            int rows = DbHelperSQL.ExecuteSql(strSql.ToString(), parameters);
            if (rows > 0)
            {
                return true;
            }
            else
            {
                return false;
            }
        }
        

    insert方法可以实现与Append一样的效果。

        StringBuilder strSql = new StringBuilder();
	strSql.Insert(strSql.length(),"fxq");

 
    Remove 方法:方法从当前 StringBuilder 中移除指定数量的字符 

        StringBuilder strSql = new StringBuilder();
	strSql.Remove(3,4);      //从第3个位置开始,删除4个字符串;

    Replace方法:用另一个指定的字符来替换StringBuilder对象内的字符。使用Replace方法来搜索对象,查找所有的感叹号字符,并用问号字符来替换它们。

<span style="font-family:SimSun;">     StringBuilder strSql = new StringBuilder("Hello World!");
     strSql.Replace('!', '?');  //替换;</span>

    String 或 StringBuilder 对象的串联操作的性能取决于内存分配的发生频率。String 串联操作每次都分配内存,而 StringBuilder 串联操作仅当 StringBuilder 对象缓冲区太小而无法容纳新数据时才分配内存。因此,如果串联固定数量的 String 对象,则 String 类更适合串联操作。这种情况下,编译器甚至会将各个串联操作组合到一个操作中。如果串联任意数量的字符串,则 StringBuilder 对象更适合串联操作;例如,某个循环对用户输入的任意数量的字符串进行串联。

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 35
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 35
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值