在Day18-處理字串的方法這篇文章裡有提到StringBuilder,覺得應該要介紹一下他XD
首先,String跟StringBuilder是不一樣
的喔XD
System.String 資料型別(或是說 String 物件):
1.代表不變的字串,一旦設定好值,就不能更改它。
2.String是字元的陣列,一個連續的記憶體,當要新增、修改、刪除、變動String,就必須毀掉這個陣列重新建立一個字串,很耗效能
於是當想要大量調整的字串,而不建立新物件時,為了提升效能,StringBuilder就出現了!!!
由於是一個StringBuilder型態的物件,所以要使用new來建立它
StringBuilder sbBuilder = new StringBuilder("Hello World!");
它是一個動態物件,但我們也能夠指定它的大小(能容納的字元數上限值),在到達容量上限之前,它不會重新配置自己的大小。
StringBuilder sbBuilder = new StringBuilder("Hello World!",20);
也可以使用Capacity屬性這樣寫:
sbBuilder.Capacity = 20;
其實String跟StringBuilder方法很像
1.StringBuilder.Append:將資訊追加到當前StringBuilder的結尾。
StringBuilder sbBuilder = new StringBuilder("Hello World!");
string a = sbBuilder.Append("123").ToString();
Console.WriteLine(a);
輸出結果:
2.StringBuilder.AppendFormat:用帶格式文字替換字串中傳遞的格式說明符。可以參考Day14-string.format的部分
StringBuilder sbBuilder = new StringBuilder("Hello World!");
int price = 20;
string b = sbBuilder.AppendFormat($"{price:C}").ToString();
Console.WriteLine(b);
輸出結果:
3.StringBuilder.Insert:將字串或物件插入到當前 StringBuilder 物件的指定索引。
StringBuilder sbBuilder = new StringBuilder("Hello World!");
string c = sbBuilder.Insert(3, "yoyo").ToString();
Console.WriteLine(c);
輸出結果:
4.StringBuilder.Remove:從當前 StringBuilder 物件中移除指定數量的字元。
StringBuilder sbBuilder = new StringBuilder("Hello World!");
string d = sbBuilder.Remove(3, 5).ToString();
Console.WriteLine(d);
輸出結果:
5.StringBuilder.Replace:替換指定索引處的指定字元。
StringBuilder sbBuilder = new StringBuilder("Hello World!");
string e = sbBuilder.Replace("o", "A").ToString();
Console.WriteLine(e);
輸出結果:
6.StringBuilder.Clear:清除字元
StringBuilder sbBuilder = new StringBuilder("Hello World!");
string f = sbBuilder.Clear().ToString();
Console.WriteLine(f);
輸出結果:
昨天在台灣 .NET 技術愛好者俱樂部看到這篇關於StringBuilder效能的文章,跟大家分享一下XD
MSDN-在.NET中使用StringBuilder類別
MSDN-StringBuilder Class
在C#及.NET框架中使用StringBuilder類操作字串的技巧