StringBuilder 的 indexer 属性与string 的 indexer 用法一致,都返回 char 类型。
Capacity 属性获取或设定 StringBuilder 的内存容量。
StringBuilder 的 EnsureCapacity 方法将当前容量 times 2 (当前 13 * 2), 如果仍小于所需容量(例如 40),新容量设置为41。大于的话就设置为当前容量。
StringBuilder 的 length 属性:如果set 的长度比 StringBuilder 的字符窜短的话,截取 length 设定的长度。
StringBuilder Append 方法可以把各种 data - type 加到 StringBuilder 的后边。
Insert 可以把 data - type 插入到StringBuilder 的任何位置。
remove 方法可以删除在 StringBuilder 任何位置上的一段 string.
Replace 方法比较有意思,它 search 制定的 string or char 并把它用另一个 string or char 替换。
AppendFormat 方法:
String str = "format is {0 , 10:E}";
format 的格式为 {x[,y][:FormatString]}, where x 表示第几个参数要被formatted, y 是optional 的参数,指出format 结果应显示多少各字符。如果目标 string < y, 用空格代替多余字符(y - string.length 个空格). y 可正数/负数,正数时把 string aligns to the right..,negative integer aligns it to the left. FormatString applies a particular format to the argument: Currency, decimal or scientific ...
如果要在列表或文本框中显示一个变量的值,一般要用static String.Format() 方法来获得改变量的核实字符窜表示,但用于请求所需的格式说明符合传递给 Console.writeline() 格式相同,所以用 Console.writeline() 来做事例说明。
Console.writeline("The double is {0,10:E} and teh in contains {1}", d, i) ;
Console.writeline() 只是把参数的完整列表传递给 static String.Format(),
public void Console.writeline(string format, object arg0, object arg1)
{
Console.writeline(String.Format(format, arg0, arg1) ;
}
String.Format() 现在要把对应对象的合适字符窜按格式说明符的要求显示并替换。但这一建立字符窜的过程需要用 stringbuilder 实例,而不是string 实例。先用 字符窜的第一部分 (the double is ) 创建和初始化。调用stringbuilder.AppendFormat() 方法, 传递第一个格式说明符 "{0, 10:E}" 和相应的 double,把这个对象的字符窜表示stringbuilder.Append() 到构造好的字符窜中。这个过程会重复直到全部格式化好的字符窜为止。
stringbuilder.AppendFormat() 需要指出如何格式化对象,他首先检查对象是否执行 System.IFormattable 接口((IFormattable)object对象),只要试着把这个对象转换为接口,看看转换是否成功即可,或者使用c# 关键字 is, 也能实现此转换。如果不执行接口,stringbuilder.AppendFormat() 只会调用对象的toString() 方法。
但是 所有预定一的基本数字类型都执行这个接口。
interface IFormattable{
string ToString(string format, IFormatProvider formatProvider);}
format 参数最先传给 Console.writeline or string.format 方法。stringbuilder.AppendFormat() 调用格式符,其中 double d 调用自己的带两个参数的ToString 方法, 返回d 按照 格式 E 返回的值传递给stringbuilder.AppendFormat() 。