NET基礎知識
1.string和StringBuilder的區別
string:每次字符串變量的內容發生了改變時,都必須重新分配內存。你想想,如果創建一個叠代100000次的循環,每次叠代都將一個字符連接到字符串,這樣內存中就會有100000個字符串,每個字符串僅僅與前一個字符串相伴只是有一個字符不同,性能影響是很大的。
StringBuilder:通過分配一個緩存,就是一個工作區來解決這些問題,在工作區中隊字符串應用StringBuilder類的相關方法。包括添加,刪除,移除,插入和替換字符等等。執行完之後,將調用ToString方法把工作區中的內容轉換為一個字符串,方便賦給一個字符串變量。這樣StringBuilder會提升一些性能。
//用一個帶格式文本來代替字符串要傳遞的符號。 StringBuilder.AppendFormat()。 int MyMoney = 24; StringBuilder MySB = new StringBuilder("欠我的錢是 "); MySB.AppendFormat("{0:C} ", MyMoney); Console.WriteLine(MySB); //將字符串和對象插入到當前StringBuilder字符串的指定位置。 StringBuilder.Insert(int,string)。 //在當前StringBuilder對象中移除指定的字符,就是說從p位置開始刪除n個字符。 StringBuilder.Remove(p,n)。 //就是用b替換a指定字符串,a和b都是字符或字符串。 StringBuilder.Replace(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字符數組中
NET基礎知識