StringBuilder 字串構建

2021-05-28 17:00:42 字數 2067 閱讀 6017

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與字串很多的方法相同,下面列舉的是字串沒...