C#string與stringBuilder的區別


 

  1. string的缺點是每次字符串變量的內容發生了改變時,都必須重新分配內存。你想想,如果創建一個迭代100000次的循環,每次迭代都將一個字符連接到字符串,這樣內存中就會有100000個字符串,每個字符串僅僅與前一個字符串相伴只是有一個字符不同,性能影響是很大的。StringBuilder通過分配一個緩存,就是一個工作區來解決這些問題,在工作區中隊字符串應用StringBuilder類的相關方法。包括添加,刪除,移除,插入和替換字符等等。執行完之后,將調用ToString方法把工作區中的內容轉換為一個字符串,方便賦給一個字符串變量。這樣StringBuilder會提升一些性能。

  2. 企業項目中用的比較多,經常SQL連接。StringBuilder的對象是動態的,可以改變字符串的內容。StringBuilder修改字符串內容的方法。

    1:StringBuilder.Append()。將內容追加到當前StringBuilder字符串的結尾。

       StringBuilder MySB = new StringBuilder("您好!");    MySB.Append(" 大家好!");    Console.WriteLine(MySB); 

    2:StringBuilder.AppendFormat()。用一個帶格式文本來代替字符串要傳遞的符號。

       int MyMoney = 24;    StringBuilder MySB = new StringBuilder("欠我的錢是 ");    MySB.AppendFormat("{0:C} ", MyMoney);    Console.WriteLine(MySB); 

    3:StringBuilder.Insert(int,string)。將字符串和對象插入到當前StringBuilder字符串的指定位置。

    4:StringBuilder.Remove(p,n)。在當前StringBuilder對象中移除指定的字符,就是說從p位置開始刪除n個字符。

    5:StringBuilder.Replace(a,b)。就是用b替換a指定字符串,a和b都是字符或字符串。

       string a="aaa aaa aaa";

       string b=a.Replace(‘a’,‘w’);

       結果輸出“www www www”。

    上面這幾種方法string也是用的,甚至比StringBuilder還要多一些。多出來的有如下:PadRight()/PadLeft()方法,根據指定寬度,用相應的個數給定字符天才字符中,如果未指定填充字符,則使用空白符來填充。

      string a="abcdefg";

      a=a.PadRight(a.Length+3,"!");

      結果輸出“abcdefg!!!”。

    Split(char[])方法,char數組包含分隔符,可用將字符串分割為子串,這些子串將作為一個字符串數組中的元素返回。

    Substring()方法,從指定的位置N開始抽取指定的長度串,如果指定為1,就抽取長度為1的子串。

    ToUpper()/ToLower(),返回字符串的大小寫形式的副本。

    Trim()/Trim(char[]),刪除字符串中所有的空白符,如果提供的是一個char數組,則刪除這個char數組指定的前導和結尾字符。

    TrimEnd(char[])/TrimStart([]),刪除char數字指定的所有前導和末尾的字符,如果數組是null,則刪除空白符。

    ToCharArray()/ToCharArray(n,1),從字符串中抽取字符,並將它放入一個Unicode字符數組中


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM