字串處理總結之二(C#StringBuilder類)

來源:互聯網
上載者:User

標籤:使用   括弧   string類   格式   意義   alt   wchar   資料類型   length   

動態串StringBuilder

與String類相比,System.Text.StringBuilder類可以實現動態字串。此外,動態含義是指在修改字串時,系統不需要建立新的對象,不會重複開闢新的記憶體空間,而是直接在原StringBuilder對象的基礎上進行修改。下面,將從各個應用的角度,詳細討論StringBuilder類。

1. 聲明StringBuilder串

StringBuilder類位於命名空間System.Text中,使用時,可以在檔案頭通過using語句引入該空間:

using System.Text;

聲明StringBuilder對象需要使用new關鍵字,並可以對其進行初始化。如以下語句聲明了一個StringBuilder對象myStringBuilder,並初始化為“Hello”:

StringBuildermyStringBuilder=new StringBuilder("Hello");

如果不使用using關鍵字在檔案頭引入System.Text命名空間,也可以通過空間限定來聲明StringBuilder對象:

System.Text.StringBuildermyStringBuilder=new StringBuilder("Hello");

在聲明時,也可以不給出初始值,然後通過其方法進行賦值。

2. 設定StringBuilder容量

StringBuilder對象為動態字串,可以對其設定好的字元數量進行擴充。另外,還可以設定一個最大長度,這個最大長度稱為該StringBuilder對象的容量(Capacity)。

為StringBuilder設定容量的意義在於,當修改StringBuilder字串時,當其實際字元長度(即字串已有的字元數量)未達到其容量之前,StringBuilder不會重新分配空間;當達到容量時,StringBuilder會在原空間的基礎之上,自動不進行設定,StringBuilder預設初始分配16個字元長度。有兩種方式來設定一個StringBuilder對象的容量。

1.使用建構函式

 StringBuilder建構函式可以接受容量參數,例如,下面聲明一個StringBuilder對象sb2,並設定其容量為100。

//使用建構函式

 StringBuilder sb2=new StringBuilder("Hello",100);

2.使用Capacity讀/寫屬性

 Capacity屬性指定StringBuilder對象的容量,例如下面語句首先一個StringBuilder對象sb3,然後利用Capacity屬性設定其容量為100。

//使用Capacity屬性

 StringBuilder sb3=new StringBuilder("Hello");

 sb3.Capacity=100;

3. 追加操作

追加一個StringBuilder是指將新的字串添加到當前StringBuilder字串的結尾處,可以使用Append和AppendFormat來實現這個功能。

1. Append方法

 Append方法實現簡單的追加功能,常用形式為:

 public StringBuilder Append(object value);

 其中,參數value既可以是字串類型,也可以是其他的資料類型,如bool、byte、int等。下例中,把一個StringBuilder字串“Hello”追加為“Hello World!”。

 //Append

 StringBuilder sb4=new StringBuilder("Hello");

 sb4.Append(" World!");

2.AppendFormat方法

 AppendFormat方法可以實現對追加部分字串的格式化,可以定義變數的格式,並將格式化後的字串追加在StringBuilder後面。常用的形式為:

 StringBuilder AppendFormat(string format,params object[] args);

 其中,args數組指定所要追加的多個變數。format參數包含格式規範的字串,其中包括一系列用大括弧括起來的格式字元,如{0:u}。這裡,0代表對應args參數數組中的第0個變數,而‘u’定義其格式。下例中,把一個StringBuilder字串“Today is”追加“Today is *當前日期*\”。

 //AppendFormat

 StringBuilder sb5=new StringBuilder("Today is ");

 sb5.AppendFormat("{0:yyyy-MM-dd}",System.DateTime.Now);

 Console.WriteLine(sb5); //形如:"Today is 2008-10-20"

4. 插入操作

StringBuilder的插入操作是指將新的字串插入到當前的StringBuilder字串的指定位置,如“Hello”變為“Heeeello”。可以使用StringBuilder類的Insert方法來實現這個功能,常用形式為:

public StringBuilder Insert(int index, object value);

其中,參數index指定所要插入的位置,並從0開始索引,如index=1,則會在原字串的第2個字元之前進行插入操作;同Append一樣,參數value並不僅是只可取字串類型。

5. 刪除操作

StringBuilder的刪除操作可以從當前StringBuilder字串的指定位置,刪除一定數量的字元,例如把“Heeeello”變為“Hello”。可以使用StringBuilder類的Remove方法來實現這個功能,常用形式為:

public StringBuilder Remove(int startIndex, int length);

其中,參數startIndex指定所要刪除的起始位置,其含義同Insert中的index相同;length參數指定所要刪除的字元數量。下例中,把一個StringBuilder字串“Heeeello”通過刪除操作修改為“Hello”。

 //Remove

 StringBuilder sb7=new StringBuilder("Heeello");

 sb7.Remove(2,3); //在”He”後面刪除個字元

 Console.WriteLine(sb7); //"Hello!"

6. 替換操作

 StringBuilder使用Replace方法來實現替換操作,例如把“Hello”變為“Hero”,就需要使用替換操作,將“ll”替換為“r”。這同String類的Replace方法非常類似,其常用

形式包括:

public StringBuilder Replace(char oldChar, char newChar);

public StringBuilder Replace(string oldValue, string newValue);

 其中,參數oldChar和oldValue為待替換的字元和子串,而newChar和newValue為替換後的新字元和新子串。

 下例把“Hello”通過替換為“Hero”。

 //Replace

 StringBuilder sb8=new StringBuilder("Hello");

 sb8=sb8.Replace("ll","r");

 Console.WriteLine(sb8); //Hero

7. 與String比較

通過上面的介紹,可以看出StringBuilder與String在許多操作上(如Insert、Remove、Replace)上是非常相似的。

 在操作效能和記憶體效率方面,StringBuilder要比String好得多,可以避免產生太多的臨時字串對象,特別是對於經常重複進行修改的情況更是如此。而另一方面,String類提供了更多的方法,可以使開發能夠更快地實現應用。

在兩者的選擇上,如果應用對於系統效能、記憶體要求比較嚴格,以及經常處理大規模的字串,推薦使用StringBuilder對象;否則,可以選擇使用String。

 
1
 

 

字串處理總結之二(C#StringBuilder類)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.