C# 十三、StringBuilder

string是引用类型,每次改变string对象的值,即修改字符串变量对应的字符串,都需要在内存中为新字符串重新分配空间。当对一个字符串变量的值进行反复地修改时,内存开销会比较大。StringBuilder可以帮助避免此类问题。 

声明/定义

StringBuilder();

语法格式:StringBuilder stringBuilder = new StringBuilder();

 StringBuilder(int capacity);

语法格式:StringBuilder stringBuilder = new StringBuilder(5);

参数说明:

  • capacity:此实例的建议起始大小。

StringBuilder(string value);

语法格式:StringBuilder stringBuilder = new StringBuilder("abc");

参数说明:

  • value:用于初始化实例值的字符串。

StringBuilder(string value, int capacity);

语法格式:StringBuilder stringBuilder = new StringBuilder("abc",5);

参数说明:

  • value:用于初始化实例值的字符串。
  • capacity:此实例的建议起始大小。

StringBuilder(int capacity, int maxCapacity);

语法格式:StringBuilder stringBuilder = new StringBuilder(2,5);

参数说明:

  • capacity:此实例的建议起始大小。
  • maxCapacity:当前字符串可包含的最大字符数。

StringBuilder(string value, int startIndex, int length, int capacity);

语法格式:StringBuilder stringBuilder = new StringBuilder("abc",1, 2,20);

参数说明:

  • value:用于初始化实例值的字符串。
  • startIndex:value 中子字符串开始的位置。
  • length:子字符串中的字符数。
  • capacity:此实例的建议起始大小。

基本操作

char this[int index] { get; set; }

官方摘要:获取或设置此实例中指定字符位置处的字符。

参数说明:

  • index:字符的位置。

返回结果:index 位置处的 Unicode 字符。

简单理解:读写单个字符。

代码示例:

StringBuilder stringBuilder = new StringBuilder("abc");

stringBuilder[0] = 'A';

Console.WriteLine(stringBuilder);

--->
Abc

int MaxCapacity { get; }

官方摘要:获取此实例的最大容量。

返回结果:此实例可容纳的最大字符数。

简单理解:获取容量。

代码示例:

StringBuilder stringBuilder = new StringBuilder();

Console.WriteLine(stringBuilder.MaxCapacity);

--->
2147483647

int Length { get; set; }

官方摘要:获取或设置当前 System.Text.StringBuilder 对象的长度。

返回结果:此实例的长度。

简单理解:获取长度。

代码示例:

StringBuilder stringBuilder = new StringBuilder("abc",5);
Console.WriteLine(stringBuilder.Length);

--->
3

int Capacity { get; set; }

官方摘要:获取或设置可包含在当前实例所分配的内存中的最大字符数。

返回结果:可包含在当前实例所分配的内存中的最大字符数。 其值可以从 System.Text.StringBuilder.Length 到 System.Text.StringBuilder.MaxCapacity。

简单理解:获取当前最大字符数。

代码示例:

StringBuilder stringBuilder = new StringBuilder("abc",5);

Console.WriteLine(stringBuilder.Capacity);

--->
5

Append

官方摘要:向此实例追加不同类型的字符串表示形式。

返回结果:完成追加操作后对此实例的引用。

简单理解:在后面添加内容

代码示例:(更多重载,不一一列举)

StringBuilder stringBuilder = new StringBuilder("abc",5);

stringBuilder.Append('d');

Console.WriteLine(stringBuilder);

--->
abcd

AppendLine

官方摘要:将后面跟有默认行终止符的指定字符串的副本追加到当前 System.Text.StringBuilder 对象的末尾。

返回结果:完成追加操作后对此实例的引用。

简单理解:添加后换行。

代码示例:(更多重载,不一一列举)

StringBuilder stringBuilder = new StringBuilder("abc",5);

stringBuilder.AppendLine("d");
stringBuilder.Append("e");

Console.WriteLine(stringBuilder);

--->
abcd
e

Clear

官方摘要:从当前 System.Text.StringBuilder 实例中移除所有字符。

返回结果:其 System.Text.StringBuilder.Length 为 0(零)的对象。

简单理解:清空。

代码示例:(更多重载,不一一列举)

StringBuilder stringBuilder = new StringBuilder("abc");

stringBuilder.Clear();

stringBuilder.Append("ABC");

Console.WriteLine(stringBuilder);

--->
ABC

CopyTo(int sourceIndex, char[] destination, int destinationIndex, int count);

官方摘要:将此实例的指定段中的字符复制到目标 System.Char 数组的指定段中。

参数说明:

  • sourceIndex:将此实例的指定段中的字符复制到目标 System.Char 数组的指定段中。
  • destination:此实例中开始复制字符的位置。 索引是从零开始的。
  • destinationIndex:destination 中将从其开始复制字符的起始位置。 索引是从零开始的。
  • count:要复制的字符数。

简单理解:将指定字符复制到char数组中。

代码示例:

StringBuilder stringBuilder = new StringBuilder("abc");
char[] c = new char[5];
stringBuilder.CopyTo(1, c, 1, 2);

foreach (var item in c)
{
    Console.WriteLine(item);
}   

--->

b
c


int EnsureCapacity(int capacity);

官方摘要:确保 System.Text.StringBuilder 的此实例的容量至少是指定值。

参数说明:

  • capacity:要确保的最小容量。

返回结果:此实例的新容量。

简单理解:调整容量。

代码示例:

StringBuilder stringBuilder = new StringBuilder();
            
Console.WriteLine(stringBuilder.Capacity);

stringBuilder.EnsureCapacity(25);

Console.WriteLine(stringBuilder.Capacity);

--->
16
25

Equals

官方摘要:返回一个值,该值指示此实例是否等于指定的对象。

返回结果:比较结果 true/flase。

简单理解:比较两个StringBuilder是否相同。

代码示例:

StringBuilder stringBuilder1 = new StringBuilder("abc");
StringBuilder stringBuilder2 = new StringBuilder("ABC");

Console.WriteLine(stringBuilder1.Equals(stringBuilder2));

--->
False

Insert

官方摘要:将对象的内容插入到此实例中的指定字符位置。

返回结果:完成插入操作后对此实例的引用。

简单理解:插入内容。

代码示例:(更多重载,不一一列举)

StringBuilder stringBuilder = new StringBuilder("ac");

Console.WriteLine(stringBuilder.Insert(1,"b"));

--->
abc

Remove

官方摘要:将指定范围的字符从此实例中移除。

返回结果:切除操作完成后对此实例的引用。

简单理解:删除内容。

代码示例:

StringBuilder stringBuilder = new StringBuilder("abcde");

Console.WriteLine(stringBuilder.Remove(1,3));

--->
ae

Replace

官方摘要:将此实例中出现的所有指定字符串的替换为其他指定字符串。

返回结果:对此实例的引用,其中 oldValue 的所有实例被 newValue 替换。

简单理解:替换内容。

代码示例:(更多重载,不一一列举)

StringBuilder stringBuilder = new StringBuilder("abcde");
Console.WriteLine(stringBuilder.Replace("ab", "AB"));

--->
ABcde

ToString

官方摘要:将此实例的值转换为 System.String。

返回结果:其值与此实例相同的字符串。

简单理解:转换成字符串。

代码示例:(更多重载,不一一列举)

StringBuilder stringBuilder = new StringBuilder("abcde");
string s = stringBuilder.ToString();
Console.WriteLine(s);

--->
abcde

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值