关于 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.FormatConsole.WriteLine 相同。

使用 Insert 的许多重载,您都可以在 StringBuilder 中的任意位置插入字符串(可能通过调用参数的 ToString 方法计算得出)。

使用 Remove,可以删除从任意位置开始任意数量的字符。

使用 Replace,可以替换单个字符,或者如前文所述替换子字符串。

最后,使用 ToString 的重载,可以根据 StringBuilder(或其指定的子字符串)创建并返回新的 String 对象。

 
原创粉丝点击