普通的string不可變,除非用+ 但是+兩個字符串后 會生成一個新的string實例。會在內存中創建新的字符串對象。如果重復的對字符串修改,將極大的增加內存開銷。c#提供了個可變的字符串序列StringBuilder類。大大的提高了頻繁增加字符串的效率
構造方法
StringBuilder MyStringBuilder = new StringBuilder("Hello World!");
(一)設置容量和長度
雖然 StringBuilder 對象是動態對象,允許擴充它所封裝的字符串中字符的數量,但是您可以為它可容納的最大字符數指定一個值。此值稱為該對象的容量,不應將它與當前 StringBuilder 對象容納的字符串長度混淆在一起。例如,可以創建 StringBuilder 類的帶有字符串“Hello”(長度為 5)的一個新實例,同時可以指定該對象的最大容量為 25。當修改 StringBuilder 時,在達到容量之前,它不會為其自己重新分配空間。當達到容量時,將自動分配新的空間且容量翻倍。可以使用重載的構造函數之一來指定 StringBuilder 類的容量。以下代碼示例指定可以將 MyStringBuilder 對象擴充到最大 25 個空白。
StringBuilder MyStringBuilder = new StringBuilder("Hello World!", 25);
另外,可以使用讀/寫 Capacity 屬性來設置對象的最大長度。以下代碼示例使用 Capacity 屬性來定義對象的最大長度。
MyStringBuilder.Capacity = 25;
常用函數
append 將文本字符串追加到指定對象末尾 appendFormat 自定義變量的格式並將這些☞追加到stringbuilder末尾 insert 將字符串或對象添加到string builder指定位置 remove 從當前stringbuilder對象中移除指定數量的字符 replace 用另一個指定的字符串來替換stringbuilder 對象內的字符
例子:
int n = 100; StringBuilder a = new StringBuilder("用一生下載你",100); Console.WriteLine(a); a.Append("vs 世界"); Console.WriteLine(a); a.AppendFormat("{0}:c",n); Console.WriteLine(a); a.Insert(0,"名稱:"); Console.WriteLine(a); a.Remove(15,a.Length-15); Console.WriteLine(a); a.Replace("名稱","一生所愛"); Console.WriteLine(a);