string 物件是不可改變的。每次使用 system.string 類中的方法之一時,都要在記憶體中建立乙個新的字串物件,這就需要為該新物件分配新的空間。在需要對字串執行重複修改的情況下,與建立新的 string 物件相關的系統開銷可能會非常昂貴。如果要修改字串而不建立新的物件,則可以使用 system.text.stringbuilder 類。
stringbuilder可以在例項化的時候承載乙個字串,然後在後期動態的改變字串中的值,而不會重新建立和銷毀物件。
system.text.stringbuilder sb = new stringbuilder("hello");
system.console.writeline(sb.tostring());
執行的結果如圖3.1.31:
圖3.1.31
對於執行的結果,我們可以了解到stringbuilder可以動態的為字串追加資訊,甚至是一行帶回車資訊的字串。
stringbuilder不但可以追加,也可以對字串做出其他不同的處理。
system.text.stringbuilder sb = new stringbuilder("hello");
sb.insert(0,"www.witshare.org");
sb.insert(sb.length - 1, ".", 12);
sb.remove(0, 4);
system.console.writeline(sb.tostring());
執行的結果如圖3.1.32:
圖3.1.32
雖然 stringbuilder 的物件是動態物件,允許擴充它所封裝的字串中字元的數量,但是您可以為它可容納的最大字元數指定乙個值。此值稱為該物件的容量,不應將它與當前 stringbuilder 物件容納的字串長度混淆在一起。
以下**描述了這個過程:
system.text.stringbuilder sb = new stringbuilder("hello", 10);
system.console.writeline("stringbuilder最大長度", sb.capacity);
sb.insert(0, "www.witshare.org");
sb.insert(sb.length - 1, ".", 12);
sb.remove(0, 4);
system.console.writeline("stringbuilder產生的字串的實際長度", sb.tostring().trim().length);
system.console.writeline("stringbuilder最大長度", sb.capacity);
執行的結果如圖3.1.33:
圖3.1.33
system.text.stringbuilder sb = new stringbuilder("hello", 10);
system.console.writeline(sb.tostring());
執行結果如圖3.1.34:
圖3.1.34
system.console.writeline(string.format("你好,現在是點", datetime.now.hour < 12 ? "上午" : "下午", datetime.now.toshorttimestring()));
執行的結果如圖3.1.35:
圖3.1.35
StringBuilder 字串構建
string 物件是不可改變的。每次使用 system.string 類中的方法之一時,都要在記憶體中建立乙個新的字串物件,這就需要為該新物件分配新的空間。在需要對字串執行重複修改的情況下,與建立新的 string 物件相關的系統開銷可能會非常昂貴。如果要修改字串而不建立新的物件,則可以使用 sys...
StringBuilder字串反轉案例 34
案例需求 分析步驟 1 鍵盤錄入字元轉 2 呼叫方法,傳入字串,得到反轉後的字串 3 在方法中定義乙個變數儲存最終的字串結果 4 到著遍歷字串的字元累加到變數中去 public class stringbuilderexecdemo05 2 呼叫方法,傳入字串,得到反轉後的字串 public sta...
StringBuilder(字串拼接類)
stringbuilder是在using system.text命名空間下的乙個成員。在做字串拼接的時候,因為字串是引用型別,新的字串是會再記憶體中建立的,所以用 號拼接字串是比較耗效率的.stringbuilder類就可以提高效能。stringbuilder與字串很多的方法相同,下面列舉的是字串沒...