1. 程式人生 > >string類和stringBuilder類

string類和stringBuilder類

rem 提升 bst 得到 格式 repl 查找字符串 作用 數組a

字符串是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類