string 對象是不可變的,包括長度和其中的任何字元都是不可以改變的。
string str = "a";
str = str + "b";
以上代碼讓人誤以為str是能夠增加長度的。其實 第2句代碼是重新建立了一個新的對象,而第1個對象被丟棄,它將成為垃圾收集器收集的對象。
StringBuilder是可變的。它是專門用於對字串和字元執行動態操作的類。
StringBuilder sb = new StringBuilder("a");
sb.Append("b");
StringBuilder在內部有一個足夠長的字元數組用於存放字串對象,當字串長度沒超過字元數組長度時,所有操作都是針對同一個字元數組的。當長度超過時,StringBuilder將自動建立一個更長的數組,把原來的數組複製到新數組中。
字串常見操作:
1. 取字串長度
string str = "中國";
int len = str.Length; //得到字串str的長度
2. 字串轉化為位元碼
byte[] bytStr = Encoding.Default.GetBytes(str);
然後可得到位元的長度
len = bytStr.Length;
3. 字串相加
StringBuilder sb = new StringBuilder();
sb.Append("你");
sb.Append("好");
與 str = "你" + "好"; 效果一樣,但 StringBuilder 效能要好
4. 截取字串的一部分
變數.Substring(起始位置,截取位元);
string sq = str.Substring(0, 3);
5. 查指定位置是否為空白字元
char.IsWhiteSpce(字串變數,位元); //字串從0位算起
char.IsWhiteSpace(str, 2);
6. 查字元是否是標點標點符號
char.IsPunctuation("A");
7. 字元轉化為數字
(int)'中';
8. 數字轉化為字元
(char)22269;
9. 清楚字串前後包含的空格
string str = "中國 ";
str = str.Trim();
10. 替換字串
字串變數.Replace(將原字串替換為新的字串)
string str = "中國 ";
str = str.Replace("國", "央"); //將“國”字換為“央”字
幾種輸出字串的格式:
1234.ToSstring("n"); //產生12,345.00
1234.ToSstring("c"); //產生¥12,345.00
1234.ToSstring("e"); //產生1.234500e+004
1234.ToSstring("f4"); //產生12345.0000
1234.ToSstring("x"); //產生3039(16進位)
1234.ToSstring("p"); //產生1,234,500.00%