C#字符串操做總結

C#字符串操做總結數組

一、字符串的一些特性:工具

(1)不可變性:字符串是引用類型,當給字符串賦值時,會在堆中開闢一塊空間來存放字符串,在棧中存放字符串在堆中的地址。(以下圖所示)學習

                       

(2)字符串池(針對字符串常量)ui

當程序中有多個相同的字符串常量時,這時,這些字符串都是指向內存中的同一個字符串,這個特性叫作:字符串池。之因此字符串池不會形成程序的混亂,是由於:字符串具備不可變性。spa

 

(3)字符串留用(*用的少)(Intern)。orm

string s1 = "a";blog

   string s2 = "b";索引

   string s3 = "c";內存

   string s4 = s1+s2+s3;字符串

   string s5 = s1+s2+s3;

//雖然s4和s5這兩個字符串中的內容同樣,可是在內存中是兩塊內存。

   string x1="a";

   string x2="bc";

   string s4=string.intern(s1+s2+s3);

   string s5=string.IsInterned(x1+x2);

//這個時候,s4和s5在堆中的地址就是同樣的。(字符串留用)

 

String字符串:

屬性:Length//獲取字符串的個數(不管中文字符仍是英文字符都是一個char即一個字符

方法:

  • IsNullOrEmpty()      靜態方法,判斷爲null或者爲」」
  • ToCharArray() 將string轉換爲char[]
  • ToLower()        小寫,必須接收返回值。(由於:字符串的不可變);
  • ToUpper()      大寫。
  • Equals()      比較兩個字符串是否相同。  忽略大小寫的比較,StringComparation.
  • IndexOf() 若是沒有找到對應的數據,返回-1.找到則返回出現的位置
  • LastIndexOf() 若是沒有找到對應的數據,返回-1,返回最後出現的位置
  • Substring()      //2個重載,截取字符串。
  • Split()   //分割字符串。              
  • Join()                 靜態方法  把字符串用指定的符號連接
  • Format    ()       靜態方法  經過佔位符萊拼接字符串
  • Replace()         s   //用途:微博中敏感詞替換
  • Trim()  去掉字符串兩邊的空格

一、  空字符串的表示及判斷:

(1)空字符串的表示:

string s = "";

string s = string.Empty;兩個是同樣的意思

string.Empty內部是一個靜態只讀的字符串,程序中共享一個內存,因爲具備字符串池的概念,因此寫多個它也會指向同一個內存,因此它與"" 同樣

(2)空字符串的判斷:

判斷字符串爲空能夠 用msg=="",也能夠用msg.Length==0(字符串長度爲0,表示字符串爲空)因此之後對字符串進行是否爲空的判斷時候,就用msg.Length ?=0來判斷。

經過反編譯工具,看到微軟內部實現IsNullOrEmpty的方法,很值得學習!!!

public static bool IsNullOrEmpty(string value)

{

    if (value != null)

    {

        return (value.Length == 0);

    }

    return true;

}

二、將字符串轉換爲字符數組再進行修改操做:

由於字符串是不可變的,而且在字符串的索引器中也只實現了一個只讀的所引器(只有get),因此不能直接修改字符串中的內容但能夠將字符串轉換成char數組,而後再對其進行修改

三、判斷字符串是否相等:

比較兩個字符串是否相等能夠用s1==s2也能夠用s1.Equals(s2,StringComparison.OrdinalIgnore

Case)忽略大小寫比較

//經過反編譯工具能夠看到,雖然使用的等號進行判斷,但微軟在內部仍是調用的Equals(運算符重載)

public static bool operator ==(string a, string b)

{

    return Equals(a, b);

}

四、字符串分割方法:(幾乎是萬能的方法了,推薦給你們)

         (1)引用命名空間:System.Text.RegularExpressions

         (2)定義分割方式:string pattern = " ";(萬能分割方式:string pattern = @"\s*,\s*|\s+";)

         (3)開始分割:Regex.Split(s, pattern)

五、StringBuilder:

 

注意:

(1)       StringBuilder 不等於 String,將StringBuilder轉換爲String.用ToString();

(2)       StringBuilder僅僅是拼接字符串的工具,大多數狀況下還須要把StringBuilder轉換爲String。

(3)       StringBuilder sb = new StringBuilder();

     sb.Append();//追加字符串

     sb.ToString();//把StringBuilder轉換爲字符串。

     sb.Insert();

     sb.Replace();

相關文章
相關標籤/搜索