stringBuilder类的一些用法
对字符串进行大量操作时比如拼接、截取,会在内存中新建很多字符串对象。为了减少内存开支,可以使用StringBuilder类型。
创建StringBuiler实例:
用构造函数直接创建:
StringBuilder MyStringBuilder = new StringBuilder("Hello World!");
或创建空的实例再赋值;
StringBuilder MyStringBuilder = new StringBuilder(); Str.Append("Hello World!");
1、Append(string Str )\Append(char c):连接字符串、字符:
StringBuilder Str= new StringBuilder("Hello World!"); Str.Append("c");
得到:Hello World!c
2、toString():得到字符串:
StringBuilder Str= new StringBuilder("Hello World!"); Str.toString();
得到 Hello World!
3、AppendFormat() 可以使用此方法来自定义变量的格式并将这些值追加到 StringBuilder 的后面
StringBuilder Str= new StringBuilder("Hello World!"); Str.AppendFormat("{0:C}", 10);
得到: Hello World!¥10.00
补充:{0:c} "0"表示占位符。c 是格式化控制信息,c表示货币格式。
c | C:代表货币格式
d | D:代表十进制格式
e | E:代表科学计数(指数)格式
f | F: 浮点格式
x | X: 十六进制格式。
4、insert(int offset, String str)/insert(int offset, Char c):在指定位置之前插入字符(串)
StringBuilder Str= new StringBuilder("Hello World!"); Str.Insert(6,"cute ");
得到:Hello cute World!
5、Remove(int offset,int length) 移除指定位置开始的指定长度的字符(串):
StringBuilder Str= new StringBuilder("Hello World!"); Str.Insert(6,"cute "); Str.Remove(6, 4);
得到 Hello World!
6、Replace (string str,string str2)将str替换成str2:
StringBuilder Str= new StringBuilder("Hello World!"); Str.Replace("World","China");
得到:Hello China!
在以下情况应该考虑使用string
-
对字符串进行的更改数量很小时。StringBuilder提高的性能可忽略。
-
当你执行固定数量的串联操作时,尤其是字符串文本。 在这种情况下,编译器可能会将串联操作合并为单个操作。
在生成字符串时,必须执行大量的搜索操作。 StringBuilder类缺少搜索方法,如 IndexOf
或 StartsWith
。 StringBuilder对于这些操作,必须将对象转换为 String ,这可能会使使用StringBuilder不会带来性能优势
在以下情况应该考虑使用StringBuilder
-
如果希望应用在设计时对字符串进行未知数量的更改 (例如,当你使用循环来连接包含用户输入) 的随机数量的字符串时。
-
希望应用对字符串进行大量更改时。