乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

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

       雪柳花明 2016-09-19

      動(dòng)態(tài)串StringBuilder

      String類相比,System.Text.StringBuilder類可以實(shí)現(xiàn)動(dòng)態(tài)字符串。此外,動(dòng)態(tài)的含義是指在修改字符串時(shí),系統(tǒng)不需要?jiǎng)?chuàng)建新的對象,不會(huì)重復(fù)開辟新的內(nèi)存空間,而是直接在原StringBuilder對象的基礎(chǔ)上進(jìn)行修改。下面,將從各個(gè)應(yīng)用的角度,詳細(xì)討論StringBuilder類。

      1. 聲明StringBuilder

      StringBuilder類位于命名空間System.Text中,使用時(shí),可以在文件頭通過using語句引入該空間:

      using System.Text;

      聲明StringBuilder對象需要使用new關(guān)鍵字,并可以對其進(jìn)行初始化。如以下語句聲明了一個(gè)StringBuilder對象myStringBuilder,并初始化為“Hello”:

      StringBuildermyStringBuilder=new StringBuilder("Hello");

      如果不使用using關(guān)鍵字在文件頭引入System.Text命名空間,也可以通過空間限定來聲明StringBuilder對象:

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

      在聲明時(shí),也可以不給出初始值,然后通過其方法進(jìn)行賦值。

      2. 設(shè)置StringBuilder容量

      StringBuilder對象為動(dòng)態(tài)字符串,可以對其設(shè)置好的字符數(shù)量進(jìn)行擴(kuò)展。另外,還可以設(shè)置一個(gè)最大長度,這個(gè)最大長度稱為該StringBuilder對象的容量(Capacity)。

      StringBuilder設(shè)置容量的意義在于,當(dāng)修改StringBuilder字符串時(shí),當(dāng)其實(shí)際字符長度(即字符串已有的字符數(shù)量)未達(dá)到其容量之前,StringBuilder不會(huì)重新分配空間;當(dāng)達(dá)到容量時(shí),StringBuilder會(huì)在原空間的基礎(chǔ)之上,自動(dòng)不進(jìn)行設(shè)置,StringBuilder默認(rèn)初始分配16個(gè)字符長度。有兩種方式來設(shè)置一個(gè)StringBuilder對象的容量。

      1.使用構(gòu)造函數(shù)

       StringBuilder構(gòu)造函數(shù)可以接受容量參數(shù),例如,下面聲明一個(gè)StringBuilder對象sb2,并設(shè)置其容量為100。

      //使用構(gòu)造函數(shù)

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

      2.使用Capacity/寫屬性

       Capacity屬性指定StringBuilder對象的容量,例如下面語句首先一個(gè)StringBuilder對象sb3,然后利用Capacity屬性設(shè)置其容量為100。

      //使用Capacity屬性

       StringBuilder sb3=new StringBuilder("Hello");

       sb3.Capacity=100;

      3. 追加操作

      追加一個(gè)StringBuilder是指將新的字符串添加到當(dāng)前StringBuilder字符串的結(jié)尾處,可以使用AppendAppendFormat來實(shí)現(xiàn)這個(gè)功能。

      1. Append方法

       Append方法實(shí)現(xiàn)簡單的追加功能,常用形式為:

       public StringBuilder Append(object value);

       其中,參數(shù)value既可以是字符串類型,也可以是其他的數(shù)據(jù)類型,如bool、byte、int等。下例中,把一個(gè)StringBuilder字符串“Hello”追加為“Hello World!”。

       //Append

       StringBuilder sb4=new StringBuilder("Hello");

       sb4.Append(" World!");

      2.AppendFormat方法

       AppendFormat方法可以實(shí)現(xiàn)對追加部分字符串的格式化,可以定義變量的格式,并將格式化后的字符串追加在StringBuilder后面。常用的形式為:

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

       其中,args數(shù)組指定所要追加的多個(gè)變量。format參數(shù)包含格式規(guī)范的字符串,其中包括一系列用大括號括起來的格式字符,如{0:u}。這里,0代表對應(yīng)args參數(shù)數(shù)組中的第0個(gè)變量,而‘u’定義其格式。下例中,把一個(gè)StringBuilder字符串“Today is”追加“Today is *當(dāng)前日期*\”。

       //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的插入操作是指將新的字符串插入到當(dāng)前的StringBuilder字符串的指定位置,如“Hello”變?yōu)椤?/span>Heeeello”??梢允褂?/span>StringBuilder類的Insert方法來實(shí)現(xiàn)這個(gè)功能,常用形式為:

      public StringBuilder Insert(int index, object value);

      其中,參數(shù)index指定所要插入的位置,并從0開始索引,如index=1,則會(huì)在原字符串的第2個(gè)字符之前進(jìn)行插入操作;同Append一樣,參數(shù)value并不僅是只可取字符串類型。

      5. 刪除操作

      StringBuilder的刪除操作可以從當(dāng)前StringBuilder字符串的指定位置,刪除一定數(shù)量的字符,例如把“Heeeello”變?yōu)椤?/span>Hello”。可以使用StringBuilder類的Remove方法來實(shí)現(xiàn)這個(gè)功能,常用形式為:

      public StringBuilder Remove(int startIndex, int length);

      其中,參數(shù)startIndex指定所要?jiǎng)h除的起始位置,其含義同Insert中的index相同;length參數(shù)指定所要?jiǎng)h除的字符數(shù)量。下例中,把一個(gè)StringBuilder字符串“Heeeello”通過刪除操作修改為“Hello”。

       //Remove

       StringBuilder sb7=new StringBuilder("Heeello");

       sb7.Remove(2,3); //在”He”后面刪除個(gè)字符

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

      6. 替換操作

       StringBuilder使用Replace方法來實(shí)現(xiàn)替換操作,例如把“Hello”變?yōu)椤?/span>Hero”,就需要使用替換操作,將“ll”替換為“r”。這同String類的Replace方法非常類似,其常用

      形式包括:

      public StringBuilder Replace(char oldChar, char newChar);

      public StringBuilder Replace(string oldValue, string newValue);

       其中,參數(shù)oldCharoldValue為待替換的字符和子串,而newCharnewValue為替換后的新字符和新子串。

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

       //Replace

       StringBuilder sb8=new StringBuilder("Hello");

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

       Console.WriteLine(sb8); //Hero

      7. 與String比較

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

       在操作性能和內(nèi)存效率方面,StringBuilder要比String好得多,可以避免產(chǎn)生太多的臨時(shí)字符串對象,特別是對于經(jīng)常重復(fù)進(jìn)行修改的情況更是如此。而另一方面,String類提供了更多的方法,可以使開發(fā)能夠更快地實(shí)現(xiàn)應(yīng)用。

      在兩者的選擇上,如果應(yīng)用對于系統(tǒng)性能、內(nèi)存要求比較嚴(yán)格,以及經(jīng)常處理大規(guī)模的字符串,推薦使用StringBuilder對象;否則,可以選擇使用String


        本站是提供個(gè)人知識管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多