MSDN Library
信息
您所需的主题如下所示。但此主题未包含在此库中。

StringBuilder 类

2013/12/13

表示可变字符字符串。无法继承此类。

System.Object
  System.Text.StringBuilder

Namespace:  System.Text
程序集:  mscorlib(位于 mscorlib.dll 中)

声明
Public NotInheritable Class StringBuilder

StringBuilder 类型公开以下成员。

  名称说明
公共方法StringBuilder初始化 StringBuilder 类的新实例。
公共方法StringBuilder(Int32)使用指定的容量初始化 StringBuilder 类的新实例。
公共方法StringBuilder(String)使用指定的字符串初始化 StringBuilder 类的新实例。
公共方法StringBuilder(Int32, Int32)初始化 StringBuilder 类的新实例,该类起始于指定容量并且可增长到指定的最大容量。
公共方法StringBuilder(String, Int32)使用指定的字符串和容量初始化 StringBuilder 类的新实例。
公共方法StringBuilder(String, Int32, Int32, Int32)用指定的子字符串和容量初始化 StringBuilder 类的新实例。
返回顶部

  名称说明
公共属性Capacity获取或设置可包含在当前实例所分配的内存中的最大字符数。
公共属性Chars获取或设置此实例中指定字符位置处的字符。
公共属性Length获取或设置当前 StringBuilder 对象的长度。
公共属性MaxCapacity获取此实例的最大容量。
返回顶部

  名称说明
公共方法Append(Boolean)在此实例的结尾追加指定的布尔值的字符串表示形式。
公共方法Append(Byte)在此实例的结尾追加指定的 8 位无符号整数的字符串表示形式。
公共方法Append(Char)在此实例的结尾追加指定 Unicode 字符的字符串表示形式。
公共方法Append(Char())在此实例的结尾追加指定数组中的 Unicode 字符的字符串表示形式。
公共方法Append(Decimal)在此实例追加指定的十进制数的字符串表示形式。
公共方法Append(Double)在此实例的结尾追加指定的双精度浮点数的字符串表示形式。
公共方法Append(Int16)在此实例的结尾追加指定的 16 位有符号整数的字符串表示形式。
公共方法Append(Int32)在此实例的结尾追加指定的 32 位有符号整数的字符串表示形式。
公共方法Append(Int64)在此实例的结尾追加指定的 64 位有符号整数的字符串表示形式。
公共方法Append(Object)在此实例的结尾追加指定对象的字符串表示形式。
公共方法Append(SByte)在此实例的结尾追加指定的 8 位有符号整数的字符串表示形式。
公共方法Append(Single)在此实例的结尾追加指定的单精度浮点数的字符串表示形式。
公共方法Append(String)在此实例的结尾追加指定字符串的副本。
公共方法Append(UInt16)在此实例的结尾追加指定的 16 位无符号整数的字符串表示形式。
公共方法Append(UInt32)在此实例的结尾追加指定的 32 位无符号整数的字符串表示形式。
公共方法Append(UInt64)在此实例的结尾追加指定的 64 位无符号整数的字符串表示形式。
公共方法Append(Char, Int32)在此实例的结尾追加 Unicode 字符的字符串表示形式指定数目的副本。
公共方法Append(Char(), Int32, Int32)在此实例的结尾追加指定的 Unicode 字符子数组的字符串表示形式。
公共方法Append(String, Int32, Int32)在此实例的结尾追加指定子字符串的副本。
公共方法AppendFormat(String, Object())向此实例追加通过处理组合格式字符串(包含零个或更多格式项)而返回的字符串。每个格式项都由参数数组中相应参数的字符串表示形式替换。
公共方法AppendFormat(IFormatProvider, String, Object())向此实例追加通过处理组合格式字符串(包含零个或更多格式项)而返回的字符串。每个格式项都使用指定的格式提供程序由参数数组中相应参数的字符串表示形式替换。
公共方法AppendLine将默认的行终止符追加到当前 StringBuilder 对象的末尾。
公共方法AppendLine(String)将指定字符串的副本和默认的行终止符追加到当前 StringBuilder 对象的末尾。
公共方法Clear从当前 StringBuilder 实例中移除所有字符。
公共方法CopyTo将此实例的指定段中的字符复制到目标 Char 数组的指定段中。
公共方法EnsureCapacity确保 StringBuilder 的此实例的容量至少是指定值。
公共方法Equals(Object)确定指定的 Object 是否等于当前的 Object (从 Object 继承。)
公共方法Equals(StringBuilder)返回一个值,该值指示此实例是否等于指定的对象。
受保护的方法Finalize允许 Object 在垃圾回收器回收该对象之前尝试释放资源并执行其他清理操作。 (从 Object 继承。)
公共方法GetHashCode用作特定类型的哈希函数。 (从 Object 继承。)
公共方法GetType获取当前实例的 Type (从 Object 继承。)
公共方法Insert(Int32, Boolean)将布尔值的字符串表示形式插入到此实例中的指定字符位置。
公共方法Insert(Int32, Byte)将指定的 8 位无符号整数的字符串表示形式插入到此实例中的指定字符位置。
公共方法Insert(Int32, Char)将指定的 Unicode 字符的字符串表示形式插入到此实例中的指定位置。
公共方法Insert(Int32, Char())将指定的 Unicode 字符数组的字符串表示形式插入到此实例中的指定字符位置。
公共方法Insert(Int32, Decimal)将十进制数的字符串表示形式插入到此实例中的指定字符位置。
公共方法Insert(Int32, Double)将双精度浮点数的字符串表示形式插入到此实例中的指定字符位置。
公共方法Insert(Int32, Int16)将指定的 16 位有符号整数的字符串表示形式插入到此实例中的指定字符位置。
公共方法Insert(Int32, Int32)将指定的 32 位有符号整数的字符串表示形式插入到此实例中的指定字符位置。
公共方法Insert(Int32, Int64)将 64 位有符号整数的字符串表示形式插入到此实例中的指定字符位置。
公共方法Insert(Int32, Object)将对象的字符串表示形式插入到此实例中的指定字符位置。
公共方法Insert(Int32, SByte)将指定的 8 位有符号整数的字符串表示形式插入到此实例中的指定字符位置。
公共方法Insert(Int32, Single)将单精度浮点数的字符串表示形式插入到此实例中的指定字符位置。
公共方法Insert(Int32, String)将字符串插入到此实例中的指定字符位置。
公共方法Insert(Int32, UInt16)将 16 位无符号整数的字符串表示形式插入到此实例中的指定字符位置。
公共方法Insert(Int32, UInt32)将 32 位无符号整数的字符串表示形式插入到此实例中的指定字符位置。
公共方法Insert(Int32, UInt64)将 64 位无符号整数的字符串表示形式插入到此实例中的指定字符位置。
公共方法Insert(Int32, String, Int32)将指定字符串的一个或更多副本插入到此实例中的指定字符位置。
公共方法Insert(Int32, Char(), Int32, Int32)将指定的 Unicode 字符子数组的字符串表示形式插入到此实例中的指定字符位置。
受保护的方法MemberwiseClone创建当前 Object 的浅表副本。 (从 Object 继承。)
公共方法Remove将指定范围的字符从此实例中移除。
公共方法Replace(Char, Char)将此实例中所有的指定字符替换为其他指定字符。
公共方法Replace(String, String)将此实例中所有指定字符串的匹配项替换为其他指定字符串。
公共方法Replace(Char, Char, Int32, Int32)将此实例的子字符串中所有指定字符的匹配项替换为其他指定字符。
公共方法Replace(String, String, Int32, Int32)将此实例的子字符串中所有指定字符串的匹配项替换为其他指定字符串。
公共方法ToString将此实例的值转换为 String (重写 Object.ToString。)
公共方法ToString(Int32, Int32)将此实例中子字符串的值转换为 String
返回顶部

此类表示值为可变字符序列的类似字符串的对象。之所以说值是可变的,是因为在通过追加、移除、替换或插入字符而创建它后可以对它进行修改。有关比较,请参见 String 类。

大多数修改此类的实例的方法都返回对同一实例的引用。由于返回的是对实例的引用,因此可以调用该引用的方法或属性。如果想要编写将连续操作依次连接起来的单个语句,这将很方便。

StringBuilder 的容量是实例在任何给定时间可存储的最大字符数,并且大于或等于实例值的字符串表示形式的长度。容量可通过 Capacity 属性或 EnsureCapacity 方法来增加或减少,但它不能小于 Length 属性的值。

如果在初始化 StringBuilder 的实例时没有指定容量或最大容量,则使用特定于实现的默认值。

性能注意事项

String.ConcatAppendFormat 方法都将新数据串连到一个现有的 StringStringBuilder 对象。String 对象串联操作总是用现有字符串和新数据创建新的对象。StringBuilder 对象维护一个缓冲区,以便容纳新数据的串联。如果有足够的空间,新数据将被追加到缓冲区的末尾;否则,将分配一个新的、更大的缓冲区,原始缓冲区中的数据被复制到新的缓冲区,然后将新数据追加到新的缓冲区。

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

版本说明

Windows Phone

 StringBuilder 对象可以在将字符添加到对象时,根据需要分配更多内存。分配的内存量是特定于实现的,而且如果所需内存量不可用,会引发 OutOfMemoryException。如果需要另外一种方法用于 StringBuilder,则打开 MemoryStream 并将字符串写入内存流而不是使用 StringBuilder 类。

对实现者的说明

此实现的默认容量是 16,默认的最大容量是 Int32.MaxValue

当实例值增大时,StringBuilder 可按存储字符的需要分配更多的内存,同时对容量进行相应的调整。分配的内存量是特定于实现的,而且如果所需内存量大于最大容量,会引发 ArgumentOutOfRangeException

例如,AppendAppendFormatEnsureCapacityInsertReplace 方法能增大实例的值。

通过 Chars 属性可以访问 StringBuilder 的值中的单个字符。索引位置从零开始。

下面的代码示例演示如何调用由 StringBuilder 类定义的多个方法。


Imports System.Text

Public Module Example
   Public Sub Demo(ByVal outputBlock As System.Windows.Controls.TextBlock)
      ' Create a StringBuilder that expects to hold 50 characters.
      ' Initialize the StringBuilder with "ABC".
      Dim sb As New StringBuilder("ABC", 50)

      ' Append three characters (D, E, and F) to the end of the StringBuilder.
      sb.Append(New Char() {"D"c, "E"c, "F"c})

      ' Append a format string to the end of the StringBuilder.
      sb.AppendFormat("GHI{0}{1}", "J"c, "k"c)

      ' Display the number of characters in the StringBuilder and its string.
      outputBlock.Text += String.Format("{0} chars: {1}", sb.Length, sb.ToString()) & vbCrLf

      ' Insert a string at the beginning of the StringBuilder.
      sb.Insert(0, "Alphabet: ")

      ' Replace all lowercase k's with uppercase K's.
      sb.Replace("k", "K")

      ' Display the number of characters in the StringBuilder and its string.
      outputBlock.Text += String.Format("{0} chars: {1}", sb.Length, sb.ToString()) & vbCrLf
   End Sub
End Module

' This code produces the following output.
'
' 11 chars: ABCDEFGHIJk
' 21 chars: Alphabet: ABCDEFGHIJK


Windows Phone OS

受以下版本支持: 8.0, 7.1, 7.0

Windows Phone

此类型的所有公共 static(在 Visual Basic 中为 Shared) 成员都是线程安全的。但不保证所有实例成员都是线程安全的。

显示:
© 2016 Microsoft