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