赞
踩
目录
2.StringBuilder.Chars[Int32] 属性
4.StringBuilder.MaxCapacity 属性
请详见本文作者的其他文章,C#用StringBuilder高效处理字符串-CSDN博客 https://wenchm.blog.csdn.net/article/details/135397349
共有4种属性:Capacity、Chars[Int32]、Length和MaxCapacity。
获取或设置可包含在当前实例所分配的内存中的最大字符数。
- public int Capacity { get; set; }
-
- 属性值
- Int32
- 可包含在当前实例所分配的内存中的最大字符数。 其值可以从 Length 到 MaxCapacity。
-
- 例外
- ArgumentOutOfRangeException
- 为集运算指定的值小于此实例的当前长度。
- 或 -
- 为集运算指定的值大于最大容量。
Capacity 不影响当前实例的字符串值。 Capacity 可以减小,只要它不小于 Length 。
StringBuilder需要时动态分配更多的空间并相应增加Capacity。 出于性能原因, StringBuilder 可能会分配比所需内存更多的内存。 分配的内存量是特定于实现的。
实例见StringBuilder.Length 属性的实例。
获取或设置此实例中指定字符位置处的字符。
- public char this[int index] { get; set; }
-
- 参数
- index
- Int32
- 字符的位置。
-
- 属性值
- Char
- index 位置处的 Unicode 字符。
-
- 例外
- ArgumentOutOfRangeException
- 设置字符时,index 在此实例的范围之外。
-
- IndexOutOfRangeException
- 获取字符时,index 在此实例的范围之外。

参数 index 是 字符在 中 StringBuilder的位置。 字符串中的第一个字符位于索引 0。 字符串的长度是它包含的字符数。 实例的最后一个 StringBuilder 可访问字符位于索引 Length - 1。
Chars[] 是 类的默认属性 StringBuilder 。 在 C# 中,它是一个索引器。
- // Chars[] 是 类的默认属性 StringBuilder 。 在 C# 中,它是一个索引器。
- // 这意味着可以从 属性中 Chars[] 检索单个字符,
- // 如以下示例所示,该属性对字符串中的字母、空格和标点符号字符数进行计数。
- using System.Text;
-
- namespace ConsoleApp7
- {
- public class Example
- {
- public static void Main()
- {
- int nAlphabeticChars = 0;
- int nWhitespace = 0;
- int nPunctuation = 0;
- StringBuilder strbuild = new("This is a simple sentence.");
-
- for (int i = 0; i < strbuild.Length; i++)
- {
- char ch = strbuild[i];
- if (char.IsLetter(ch)) { nAlphabeticChars++; continue; }
- if (char.IsWhiteSpace(ch)) { nWhitespace++; continue; }
- if (char.IsPunctuation(ch)) nPunctuation++;
- }
-
- Console.WriteLine("The sentence '{0}' has:", strbuild);
- Console.WriteLine(" Alphabetic characters: {0}", nAlphabeticChars);
- Console.WriteLine(" White-space characters: {0}", nWhitespace);
- Console.WriteLine(" Punctuation characters: {0}", nPunctuation);
- }
- }
- }
- // The example displays the following output:
- // The sentence 'This is a simple sentence.' has:
- // Alphabetic characters: 21
- // White-space characters: 4
- // Punctuation characters: 1

获取或设置当前 StringBuilder 对象的长度。
- public int Length { get; set; }
-
- 属性值
- Int32
- 此实例的长度。
-
- 例外
- ArgumentOutOfRangeException
- 为集运算指定的值小于零或大于 MaxCapacity。
对象的长度 StringBuilder 由其对象数 Char 定义。
与属性 String.Length 样, Length 属性指示当前字符串对象的长度。 String.Length与只读属性不同, Length 属性允许您修改存储在 StringBuilder 对象的字符串的长度。
如果指定的长度小于当前长度,则当前 StringBuilder 对象将被截断为指定的长度。 如果指定的长度大于当前长度,则当前 StringBuilder 对象的字符串值的末尾将填充 Unicode NULL 字符 (U+0000) 。
如果指定的长度大于当前容量, Capacity 则增大以使其大于或等于指定的长度。
- //StringBuilder.Length 属性
- using System.Text;
-
- namespace ConsoleApp6
- {
- class Sample
- {
- public static void Main()
- {
- StringBuilder sb1 = new("abc");
- StringBuilder sb2 = new("abc", 16);
-
- Console.WriteLine();
- Console.WriteLine("a1) sb1.Length = {0}, sb1.Capacity = {1}", sb1.Length, sb1.Capacity);
- Console.WriteLine("a2) sb2.Length = {0}, sb2.Capacity = {1}", sb2.Length, sb2.Capacity);
- Console.WriteLine("a3) sb1.ToString() = \"{0}\", sb2.ToString() = \"{1}\"",sb1.ToString(), sb2.ToString());
- Console.WriteLine("a4) sb1 equals sb2: {0}", sb1.Equals(sb2));
-
- Console.WriteLine();
- Console.WriteLine("Ensure sb1 has a capacity of at least 50 characters.");
- sb1.EnsureCapacity(50);
-
- Console.WriteLine();
- Console.WriteLine("b1) sb1.Length = {0}, sb1.Capacity = {1}", sb1.Length, sb1.Capacity);
- Console.WriteLine("b2) sb2.Length = {0}, sb2.Capacity = {1}", sb2.Length, sb2.Capacity);
- Console.WriteLine("b3) sb1.ToString() = \"{0}\", sb2.ToString() = \"{1}\"",sb1.ToString(), sb2.ToString());
- Console.WriteLine("b4) sb1 equals sb2: {0}", sb1.Equals(sb2));
-
- Console.WriteLine();
- Console.WriteLine("Set the length of sb1 to zero.");
- Console.WriteLine("Set the capacity of sb2 to 51 characters.");
- sb1.Length = 0;
- sb2.Capacity = 51;
-
- Console.WriteLine();
- Console.WriteLine("c1) sb1.Length = {0}, sb1.Capacity = {1}", sb1.Length, sb1.Capacity);
- Console.WriteLine("c2) sb2.Length = {0}, sb2.Capacity = {1}", sb2.Length, sb2.Capacity);
- Console.WriteLine("c3) sb1.ToString() = \"{0}\", sb2.ToString() = \"{1}\"",sb1.ToString(), sb2.ToString());
- Console.WriteLine("c4) sb1 equals sb2: {0}", sb1.Equals(sb2));
- }
- }
- }
- /*
- 运行结果:
- a1) sb1.Length = 3, sb1.Capacity = 16
- a2) sb2.Length = 3, sb2.Capacity = 16
- a3) sb1.ToString() = "abc", sb2.ToString() = "abc"
- a4) sb1 equals sb2: True
- Ensure sb1 has a capacity of at least 50 characters.
- b1) sb1.Length = 3, sb1.Capacity = 50
- b2) sb2.Length = 3, sb2.Capacity = 16
- b3) sb1.ToString() = "abc", sb2.ToString() = "abc"
- b4) sb1 equals sb2: False
- Set the length of sb1 to zero.
- Set the capacity of sb2 to 51 characters.
- c1) sb1.Length = 0, sb1.Capacity = 50
- c2) sb2.Length = 3, sb2.Capacity = 51
- c3) sb1.ToString() = "", sb2.ToString() = "abc"
- c4) sb1 equals sb2: False
- */

获取此实例的最大容量。
- public int MaxCapacity { get; }
- 属性值
- Int32
- 此实例可容纳的最大字符数。
此实现的最大容量为 Int32.MaxValue。 但是,此值特定于实现,在其他或更高版本的实现中可能有所不同。 可以通过调用 StringBuilder(Int32, Int32) 构造函数显式设置对象的最大容量StringBuilder。
详见本文作者的其他文章,C#的StringBuilder方法-CSDN博客 https://blog.csdn.net/wenchm/article/details/135419031?spm=1001.2014.3001.5501
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。