猿教程 Logo

C# StringBuilder

String是不可变的,这意味着一旦创建,String不能被改变。 例如,新字符串“Hello World !!” 将占用堆上的内存空间。 现在,通过改变初始字符串“Hello World !!” 到“Hello World !! from Tutorials Teacher”将在内存堆上创建一个新的字符串对象,而不是在同一个内存地址修改初始字符串。 如果相同的字符串通过在初始字符串中替换,附加,删除或插入新字符串多次更改,此行为将会妨碍性能。


为了解决这个问题,C#引入了StringBuilder。 StringBuilder是一个动态对象,允许您扩展字符串中的字符数。 它不在内存中创建一个新对象,而是动态扩展内存以容纳修改的字符串。



StringBuilder初始化

StringBuilder可以以类的方式初始化。

StringBuilder初始化实例:

StringBuilder sb = new StringBuilder();
//或者
StringBuilder sb = new StringBuilder("Hello World!!");

您可以通过在构造函数中传递int值来赋予字符的初始容量。 例如,以下内容将在内存堆上按顺序分配50个字符的内存。 一旦达到容量,内存分配将自动扩展。

StringBuilder sb = new StringBuilder(50);
//or
StringBuilder sb = new StringBuilder("Hello World!!",50);



StringBuilder重要的方法

方法名称描述
StringBuilder.Append(valueToAppend)将传递的值追加到当前StringBuilder对象的末尾。
StringBuilder.AppendFormat()用格式化的文本替换字符串中传递的格式说明符。
StringBuilder.Insert(index,valueToAppend)在当前StringBuilder对象的指定索引处插入一个字符串。
StringBuilder.Remove(int startIndex,int length)从当前StringBuilder对象的给定起始位置删除指定数量的字符。
StringBuilder.Replace(oldValue,newValue)将字符替换为新字符。

Append()/AppendLine():

使用StringBuilder的Append方法向StringBuilder添加或附加字符串。 AppendLine()方法在末尾附加一个换行符的字符串。

Append()实例:

StringBuilder sb = new StringBuilder("Hello ",50);
sb.Append("World!!");
sb.AppendLine("Hello C#!");
sb.AppendLine("This is new line.");
Console.WriteLine(sb);

运行结果:

Hello World!! Hello C#!.
This is new line.

注意点:当串联多个字符串时,StringBuilder的执行速度比字符串快。 如果要附加超过三个四字符串,请使用StringBuilder。 追加两个或三个字符串比使用StringBuilder更有效。

AppendFormat():

使用AppendFormat方法将输入字符串格式化为指定格式,然后将其附加。

AppendFormat实例:

StringBuilder amountMsg = new StringBuilder("Your total amount is ");
amountMsg.AppendFormat("{0:C} ", 25);
Console.WriteLine(amountMsg);

运行结果:

Your total amount is $ 25.00

Insert():

Insert() 方法 StringBuilder 中的指定索引处插入字符串。

Insert()实例:

StringBuilder sb = new StringBuilder("Hello World!!",50);
sb.Insert(5," C#");
Console.WriteLine(sb);

运行结果:

Hello C# World!!

Remove ():

Remove () 方法中移除具有指定长度的指定索引处的字符串。

Remove()实例:

StringBuilder sb = new StringBuilder("Hello World!!",50);
sb.Remove(6, 7);
Console.WriteLine(sb);

运行结果:

Hello

Replace ():

Replace()方法用指定的替换字符串替换指定字符串的所有出现。

Replace()实例:

StringBuilder sb = new StringBuilder("Hello World!!",50);
sb.Replace("World", "C#");
Console.WriteLine(sb);

运行结果:

Hello C#!!

索引器:

您可以在StringBuilder中使用索引器来获取或设置指定索引处的字符。 以下示例使用索引器来使用for循环来获取StringBuilder的所有字符。

StringBuilder sb = new StringBuilder("Hello World!!");
for(int i=0; i< sb.Length; i++)
Console.Write(sb[i]);

运行结果:

Hello World!!

ToString():

使用ToString()方法从StringBuilder中获取字符串。

StringBuilder sb = new StringBuilder("Hello World!!");
string str = sb.ToString(); // "Hello World!!"
要点
  1. StringBuilder是可变的。

  2. 当追加多个字符串值时,StringBuilder的执行速度比字符串快。

  3. 将StringBuilder初始化为类别 StringBuilder sb = new StringBuilder()

  4. 当您需要追加超过三个或四个字符串时,请使用StringBuilder。

  5. 使用Append()方法用StringBuilder添加或附加字符串。

  6. 使用ToString()方法从StringBuilder中获取字符串。


版权声明:本站所有教程均为本站原创或翻译,转载请注明出处,请尊重他人劳动果实。请记住本站地址:www.yuanjiaocheng.net (猿教程) 作者:卿文刚
本文标题: C#环境
本文地址:http://www.yuanjiaocheng.net/CSharp/Csharp-stringbuilder.html