关于 StringBuilder
来源:互联网 发布:qq游戏网络断了要等 编辑:程序博客网 时间:2024/06/08 04:50
StringBuilder
您可能已经注意到,String 中的许多方法都会创建并返回新字符串。如您所料,分配和废弃大量字符串代价是很高的。
通常,如果您要对特定的字符串执行一个需要创建新字符串的字符串操作,可以放心使用 String 中的相应方法(或适当的 Visual Basic .NET 函数)。但是,如果您要执行多个这种操作,而且 System.Text.Stringbuilder 中提供了所需的操作,则应根据您的字符串创建一个 StringBuilder,然后在该 StringBuilder 上执行多个操作,最后在 StringBuilder 上调用 ToString 以返回结果字符串。请参阅前面的示例,在该示例中,所有操作都在一行中完成。
通常的做法是在 StringBuilder 中生成一个字符串,对其进行操作,然后再将其转换成字符串。请注意,调用 ToString 并不会真正复制字符串,除非您以后又修改了同一个 StringBuilder 对象,所以它的效率是很高的,使用 StringBuilder 的系统开销只是一个复制操作,而不是两个。这就是我们为什么使用一个操作规则的原因。对于两个或多个操作,使用 StringBuilder 至少能够获得同样的效果。
如果可用重载比 String 中更有限的重载更易使用,您也可以使用 StringBuilder。
要使用 StringBuilder,您需要在程序文件的开始处包括 using System.Text;
(在 Visual Basic 中是 Imports System.Text
)。
StringBuilder 具有多个构造函数,可以从字符串初始化对象并设置其容量和最大容量。(默认的最大容量约为 20 亿个字符,所以,尽管设置较大的值也不会出问题,但设置较小的值还是比较合理的。)对象的容量可以根据需要调高,只要不超过最大容量即可。构造 StringBuilder 之后,就不能再调整其最大容量。
共有以下四个属性:Capacity(可读写)、MaxCapacity(只读)、Length(字符串的当前长度,可以设置得更短或更长)和 Chars(索引生成器,用于读写单个字符)。如果容量不够大,可以使用 EnsureCapacity 方法增加容量。
使用 Append 方法,可以将字符串或任意类型(包括许多重载)附加到 StringBuilder 末尾。如果传递其他类型,将调用其 ToString 方法,并将结果附加到 StringBuilder。
使用 AppendFormat 方法,可以格式化附加到 StringBuilder 的字符串。其格式化方法与 String.Format 和 Console.WriteLine 相同。
使用 Insert 的许多重载,您都可以在 StringBuilder 中的任意位置插入字符串(可能通过调用参数的 ToString 方法计算得出)。
使用 Remove,可以删除从任意位置开始任意数量的字符。
使用 Replace,可以替换单个字符,或者如前文所述替换子字符串。
最后,使用 ToString 的重载,可以根据 StringBuilder(或其指定的子字符串)创建并返回新的 String 对象。
- 关于 StringBuilder
- 关于StringBuilder
- 关于string/stringbuffer/stringbuilder
- 关于 StringBuilder 用法举例
- 关于String、StringBuffer、StringBuilder
- 关于String,StringBuffer,StringBuilder
- 关于String Stringbuffer StringBuilder
- 关于string stringbuilder stringbuffer
- 关于string,stringBuilder,stringBuffer
- 关于String与StringBuilder、StringBuffer
- 关于StringBuilder的一些事
- 关于String,StringBuilder的总结
- 关于String,StringBuffer与StringBuilder
- 关于Java StringBuilder操作小记
- 关于String StringBuilder StringBuffer 类
- 关于StringBuilder和String的效率问题
- 关于StringBuilder的抄作与神话
- 关于String,StringBuffer,StringBuilder,+和append
- 程序员的10种级别
- poj 1990
- 基于apache commons-fileupload-1.2组件的文件上传
- .net操作Oracle存贮过程
- [转载]玩魔兽世界的现实意义:写给找工作的毕业生
- 关于 StringBuilder
- 判断文件夹是否有了,没有则创建文件夹
- [转]FTP搜索引擎的设计与实现
- [转]FTP搜索引擎的设计与实现(优化版)
- ORACLE实例与数据库的区别
- SQL Server 2005精简版与SQL Server 2005 Express版之间的选择
- c++异常使用心得
- [原创]EXCEL2007新增函数在发放统计的应用
- 图像缩放双线性插值算法