string類和stringBuilder類
字符串是C#中的一種重要數據類型,在項目開發中,離不開字符串操作。C#提供了string類實現字符串操作。於Convert類相似,string類中方法有靜態方法和非靜態方法。註意,在C#中String和string可以認為是相同的,為了書寫簡便,我們統一采用小寫string.。
1. 靜態方法
使用“string.方法名”格式調用。
(1). 字符串比較
格式: String.Compare(str1,str2);
比較兩個字符串str1和str2大小,若str1大於str2,測返回1;若是小於測返回-1;相等返回0。
string str1 = "test"; string str2 = "t": Console.WritLine(String.Compare(str1,str2));
程序輸出結果為: 1;
兩個字符串比較,字符串中第一個不相同字符的ASCLL碼大的字符串較大。
(2). 字符串復制
格式: String.Copy(str);
創建一個與指定字符串具有相同值的新字符串實例。使用String.Copy(str)是在內存中開辟新的存儲空間,並復制字符串str,得到一個新的字符串實例。例如
string str1 = "test"; string str1 = string.Copy(str1); Console.WriteLine(str2);
程序輸出結果為: test
【TIPS】
下面的代碼也是合法的,執行完畢後str1,str2指向內存中的同一個字符串。
string str1 ="test"; string str2 = str1;
(3). 字符串判等
string.Equals(str1,str2);
判斷兩個字符串str1和str2是否相等。相等,則返回True,否則返回false。
【TIPS】
string.Equals(str1,str2) 與str1 == str2的作用相同。
(4). 字符串合並
string.Join(separator,arr),其中separator為字符串,arr為字符串數組
將字符串數組arr中的所有字符串合並成一個字符串,相鄰字符串之間添加分隔符。例如:
string [] a ={"hello","world"}; Console.WriteLine(string.Join(",",a));
2. 非靜態方法
使用“對象名.方法名”格式調用。
(1). 字符串比較
對象名.CompareTo(string str);
比較字符串對象與字符串str的大小,返回值規則與String.Compare()相同。
string str1 = "test"; string str2 = "hello": Console.WritLine(str1.CompareTo(str2));
程序輸出結果為 1;
(2). 判斷是否包含給定字串
判斷字符串對象中是否包含子字符串str。是則返回True,否則返回false。例如:
string str1 = “hello world”: string str2 = “hello”; Console.WriteLine(str1.CompareTo(str2));
程序輸出結果為: True;
(3).查詢給定子串位置
對象名.IndexOf(str)
查詢字符串對象中給定字符串str首次出現的位置,如果子字符在字符串對象中不存在,則返回-1。 例如
string str1 = “hello world”: string str2 = “world”: Console。WriteLine(str1.IndexOf(str2));
程序輸出結果為:6;
也可以指定在字符串對象中查找子串的起始位置:
Console.writeLine(str1.Indexof(str2,7));/*從字符串數組str1中下標為7的字符開始查找*/
則程序輸出結果變為:-1;
(4).查找字符串是否包含給定字符數組中的字符
對象名.IndexOfAny(arr ),arr為字符串數組
查找字符串對象中是否包含字符數組arr中的任一字符元素。如果有,則返回第一個出現的字符元素的位置。如果未能在字符串數組中的任意一個字符,則返回-1。例如:
string str1 = “hello world”; char[] s = {‘a‘,‘b‘,‘c‘,‘d‘}; Console.WriteLine(str1.IndexOfAny(s));
程序輸出結果為:10;
(5)插入字串
對象名.Insert(startindex,str),startindex為整型值,str為字符串。
在字符串對象的給定位置(startindex)插入子串str。例如:
string str1 = “hello world”; Console。WriteLine(str1.Insert(1,"text"));
程序輸出結果為: htestello world;
(6)刪除子串
對象名.Remove(startindex),startindex為整型值。
刪除此字符串從指定位置到最後位置的所有字符。
對象名.Remove(startindex,count),startindex,count為整型值。
刪除此字符串從指定位置開始的count個字符。
例如:
string str1 = “hello world”; Console.WriteLine(str1.Remove(6)); Console.WriteLine(str1.Remove(0,6));
程序輸出結果為:
hello
world
(7)替換字串
對象名.Replace(substr1,substr2),substr1,substr2為字符串。
將字符串中的所有子串substr1替換為substr2。
例如:
string str1 = "hello World"; Console.WriteLine(str1.Replace("world","China")); string str2 =“Like”: Console.WriteLine(str.Replace(‘L‘,‘N‘));
程序輸出結果為:
hello china
Nike
(8).拆分字符串
對象名.Split(chararr),chararr為字符數組
將字符串拆分成若幹子字符串,存入一個字符串數組,以字符數組chararr中的字符作為分隔符,遇到分隔符,則產生一個新的字符串。
(9)去空格
對象名.Trim(); //去掉字符串首尾的空格,字符串中間的空格不受影響。
對象名.TrimEnd(); //去掉字符串尾部的空格
對象名.TrimStart(); //去掉字符串首部的空格。
stringBuilder類
string類在進行字符串運算(如賦值,字符串連接等)時會產生一個新的字符串實例,需要為新的字符串實例分配內存空間,相關的系統開銷會非常昂貴。如果要修復字符串而不創建新的對象,且操作次數非常多,則可以使用StringBuilder類。例如,在一個順序中將許多字符串連接在一起時,可以使用StringBuilder類。StringBuilder類在原有字符串的內存空間上進行操作,使用Stringbuilder類可以提升性能。
string類和stringBuilder類