码迷,mamicode.com
首页 > Windows程序 > 详细

C#中的StringBuilder

时间:2015-05-16 18:16:31      阅读:234      评论:0      收藏:0      [点我收藏+]

标签:

1. 使用StringBuilder的好处

   由于string对象是不可更改的,我们每次使用string类的方法时,都会在内存中重新创建一个新的string对象,这时候就要为该对象分配内存空间了。如果在一段代码中,频繁执行string类的方法来修改字符串对象,那么内存消耗就会很大。例如,在一个循环中,频繁地进行字符串拼接的操作,假如这个循环执行多次,那么每次拼接字符串所产生的字符串将会吃掉很多内存空间。所以,为了提升程序的性能,在需要修改字符串而不要重新创建字符串的时候,我们采用System.Text.StringBuilder类来处理。

  StringBuilder是用来保存可变的字符串的容器,是动态的字符串对象。

2. 创建StringBuilder

            StringBuilder s1 = new StringBuilder();
            StringBuilder s2 = new StringBuilder(20); //设置StringBuilder对象的最大容量
            StringBuilder s3 = new StringBuilder("abcdef");

3. StringBuilder的特点

  1. 对象的容量有大小

    可容纳的最大字符数是可以改变的,可以通过设置Capacity属性来改变。在没有达到容量前,它不会自动重新分配空间;当达到容量时,将自动分配新的空间且容量翻倍。

    EnsureCapacity   方法可用来检查当前   StringBuilder   的容量。如果容量大于传递的值,则不进行任何更改;但是,如果容量小于传递的值,则会更改当前的容量以使其与传递的值匹配。

  2. 保存的字符串的大小

    所容纳的字符串的长度是Length属性,也可以查看或设置   Length   属性。如果将   Length   属性设置为大于   Capacity   属性的值,则自动将   Capacity   属性更改为与   Length   属性相同的值。如果将   Length   属性设置为小于当前   StringBuilder   对象内的字符串长度的值,则会缩短该字符串。

  3. 可以使用ToString()将缓冲区数据转换为字符串

4. StringBuilder的常用方法

  技术分享

  (1)Append   方法可用来将文本或对象的字符串表示形式添加到由当前   StringBuilder   对象表示的字符串的结尾处。以下示例将一个   StringBuilder   对象初始化为“Hello   World”,然后将一些文本追加到该对象的结尾处。将根据需要自动分配空间。 

            StringBuilder strBuilder = new StringBuilder("Hello  World.");
            strBuilder.Append(" I Love China."); //输出: Hello  World. I Love China.
            strBuilder.Append("123").Append("456"); //输出: Hello  World. I Love China.123456

 

  (2)AppendFormat   方法将文本添加到   StringBuilder   的结尾处,而且实现了   IFormattable   接口,因此可接受格式化部分中描述的标准格式字符串。可以使用此方法来自定义变量的格式并将这些值追加到   StringBuilder   的后面。以下示例使用   AppendFormat   方法将一个设置为货币值格式的整数值放置到   StringBuilder   的结尾。  

            int MyCash = 200;
            StringBuilder MyStringBuilder = new StringBuilder("Your total is ");
            MyStringBuilder.AppendFormat("{0:C}  ", MyCash);
            Console.WriteLine(MyStringBuilder);// Your total is $200.00

  (3)Insert   方法将字符串或对象添加到当前   StringBuilder   中的指定位置。以下示例使用此方法将一个单词插入到   StringBuilder   的第六个位置。   

            StringBuilder strBuilder1 = new StringBuilder("Hello  World.");
            strBuilder1.Insert(6, "Beautiful");
            Console.WriteLine(strBuilder1);//Hello Beautiful World.

  (4)Remove   可以使用   Remove   方法从当前   StringBuilder   中移除指定数量的字符,移除过程从指定的从零开始的索引处开始。以下示例使用   Remove   方法缩短   StringBuilder。 

            StringBuilder strBiulder2 = new StringBuilder("Hello  World!");
            strBiulder2.Remove(5, 7);
            Console.WriteLine(strBiulder2);// Hello

  (5)Replace   使用   Replace   方法,可以用另一个指定的字符来替换   StringBuilder   对象内的字符。以下示例使用   Replace   方法来搜索   StringBuilder   对象,查找所有的感叹号字符   (!),并用问号字符   (?)   来替换它们。   

 

            StringBuilder strBuilder3 = new StringBuilder("Hello  World!");
            strBuilder3.Replace(!, ?);
            Console.WriteLine(strBuilder3);//Hello  World?

 

4. StringBuilder  VS  String

  在操作性能和内存效率方面,StringBuilder要比String好得多,可以避免产生太多的临时字符串对象,特别是对于经常重复进行修改的情况更是如此。而另一方面,String类提供了更多的方法,可以使开发能够更快地实现应用。

  在两者的选择上,如果应用对于系统性能、内存要求比较严格,以及经常处理大规模的字符串,推荐使用StringBuilder对象;例如,在对数据库进行操作的时候,我们需要频繁地拼接SQL语句。否则,可以选择使用String。

   

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

C#中的StringBuilder

标签:

原文地址:http://www.cnblogs.com/lcxBlog/p/4508031.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!