C#string類型總結

字符串的特性:不可變性,每對字符串作拼接或者從新賦值之類的操做,都會在內存中產生一個新的實例。

 因此說,在.Net平臺下,若是你對一個字符串進行大量的拼接賦值等操做,會產生大量的垃圾。
 
 ---->咱們能夠將字符串看作是char類型的只讀數組。
  --->當咱們以 索引的方式去訪問某一個字符串的時候,得到是char類型
空和null有什麼區別,空在內存上開空間了,null沒有
字符串的經常使用函數
 一、ToCharArray():將一個字符串轉換成一個char類型的數組。
 二、new string(char[] chs):根據一個char類型的數組返回一個字符串。
 三、ToUpper():返回字符串的大寫形式.
 四、ToLower():返回字符串的小寫形式.
 五、Equals(,stringcomprasion......):比較兩個字符串是否相等,能夠忽略大小寫。
  (lessonOne.Equals(lessonTwo,StringComparison.OrdinalIgnoreCase)) 
Equal和Tostring都是object下的虛方法,均可以重寫
 六、Split():分割字符串,返回字符串類型的數組。
string[] nerstr=str.Split(new char[] { ' ', ',', '-' }, StringSplitOptions.RemoveEmptyEntries);
 七、Contains():判斷字符串中是否包含指定的字符串
 八、Replace():將老字符串替換成新字符串
 九、StartsWith():判斷字符串是否以指定的字符串開始
 十、EndsWith():判斷字符串是否以指定的字符串結束
 十一、Trim():去掉字符串兩端的字符。可是,不能去掉字符串中間的字符。
 十二、TrimStart():
 1三、TrimEnd():
 1四、Substring():截取指定的字符串,能夠選擇截取的長度。
 1五、IndexOf():取某一個字符在字符串中第一次出現的位置,若是沒有,則返回-1。
 1六、LastIndexof():去某一個字符在字符串中最後一次出現的位置,若是沒有,則返回-1。
 1七、靜態函數
  ---> string.IsNullOrEmpyt()判斷指定的字符串是否爲空或者爲null
  --->string.Join():將指定的分隔符插入數組每一個元素的後面,返回一個字符串,默認最後一個元素後面沒有。
18: 等號和Equals的區別
對於string類型而言,無論是等號仍是Equals比較的都是值自己。
            //Equals默認比較的是地址,可是咱們在本身定義的類中若是用到Equals,都會將Equals進行重寫,使之按照咱們本身的需求進行比較
拼接字符串
//string str = string.Empty;
            //StringBuilder sb = new StringBuilder();
            ////00:00:00.1022297
            //Stopwatch sp = new Stopwatch();

提供一組方法和屬性,可用於準確地測量運行時間。html

            //sp.Start();
            //for (int i = 0; i < 100000; i++)
            //{
            //    //str += i;
            //    sb.Append(i); //追加
            //}
            //sp.Stop();
            //Console.WriteLine(sp.Elapsed);

獲取當前實例測量得出的總運行時間。Elapsed數組

            //Console.WriteLine(sb.ToString()); 
            StringBuilder sb = new StringBuilder();
 
舉例: #region  new string() ToCharArray()
            //string str = "abcdef";
            ////str[0] = 'b';
 
            //////字符串--->char數組(可讀可寫)
            ////char[] chs = str.ToCharArray();
            ////chs[0] = 'b';
            //////將改變後的char數組再次轉換成字符串
            ////str = new string(chs);
 
            //Console.WriteLine(str[0]);
            #endregion
 
            #region  Length屬性
            //Console.WriteLine("請輸入你人生中最深入老師的名字");
            //string name = Console.ReadLine();
            //Console.WriteLine("這個老師的名字有{0}個字",name.Length);
            #endregion
 
            #region  ToUpper() ToLower() Equals()
            //Console.WriteLine("請輸入你喜歡的課程");
            //string lessonOne = Console.ReadLine();
            ////轉換成大寫
            ////lessonOne = lessonOne.ToUpper();
            ////轉換成小寫
            ////lessonOne = lessonOne.ToLower();
            //Console.WriteLine("請輸入你喜歡的課程");
            //string lessonTwo = Console.ReadLine();
            ////lessonTwo = lessonTwo.ToUpper();
            ////lessonTwo = lessonTwo.ToLower();
            //if  (lesssonsonOne.Equals(leTwo,StringComparison.OrdinalIgnoreCase))
            //{
            //    Console.WriteLine("大家喜歡的課程相同");
            //}
            //else
            //{
            //    Console.WriteLine("大家喜歡的課程不相同");
            //}
            #endregion
 
            #region  Split() 字符串的分割
            ////string str = "abc   ,,,d, ,--,ef,,--  0987";
            //////將一個字符串中沒用的東西去掉
            ////string[] strNew = str.Split(new char[] { ' ', ',', '-' }, StringSplitOptions.RemoveEmptyEntries);
 
 
            ////練習:從日期字符串("2008-08-08")中分析出年、月、日;2008年08月08日。
            ////讓用戶輸入一個日期格式如:2008-08-08,你輸出你輸入的日期爲2008年1月2日
 
            //string date = "2008-08-08";// "2008年08月08日";
            //string[] newDate =  date.Split(new char[] { '-' }, StringSplitOptions.RemoveEmptyEntries);
 
            //date = newDate[0] + "年" + newDate[1] + "月" + newDate[2] + "日";
            //Console.WriteLine(date);
            //Console.ReadKey();
            #endregion
 
            #region  Contains()判斷是否包含  Replace()替換
            //Console.WriteLine("請輸入你的評論");
            //string input = Console.ReadLine();
            ////一、判斷評論中是否包含敏感詞
            //if (input.Contains("老趙"))
            //{
            //    //二、進行替換
            //    input = input.Replace("老趙", "***");
            //}
            //Console.WriteLine(input);
            //Console.ReadKey();
            #endregion
            #region  StartsWith() EndsWith()
            //string str = "舉頭望明月,我叫郭德綱";
            ////if (str.StartsWith("頭"))
            ////{
            ////    Console.WriteLine("是的");
            ////}
            ////else
            ////{
            ////    Console.WriteLine("不是");
            ////}
            / /Console.WriteLine(str.EndsWith("舉頭望明月,我叫郭德綱") ? "是的" : "不是");
            #endregion
            #region  Trim() TrimEnd() TrimStart()
            /*string str = "----  ---1   2---3-  --  ----";
            ////str = str.Trim(); 去掉字符串兩邊的空格
            ////str = str.TrimStart(); 去掉字符串前邊的空格
            ////str = str.TrimEnd();去掉後面的空格
            str = str.Trim('-',' ');
            //string[] strNew = str.Split(new char[] { '-', ' ' }, StringSplitOptions.RemoveEmptyEntries);
              Console.Write(str);
               Console.ReadKey(); */
            #endregion
 
            #region  Substring() 截取字符串
            string str = "今天我要是上課睡覺了,我之後就單身一生";
            str = str.Substring(12,2);
            Console.WriteLine(str);
            Console.ReadKey();
            #endregion
 
 
            #region  LastIndexof()找到某一個字符在字符串中最後一次出現的位置
            //string path = @"c:\a\b\c\e\亞廷\d\f\蒼老師蒼老師.avi";
 
            ////找到某一個字符在字符串中最後一次出現的位置
            ////得到 \\在路徑中最後一次出現的位置
            //int index = path.LastIndexOf('\\');
 
            //string fileName = path.Substring(index + 1);
 
            //Console.WriteLine(fileName);
            //Console.ReadKey();
            #endregion
 
            #region  IndexOf()
              /* string str = "舉頭望明頭頭月,我叫頭郭頭德綱";
 
               int index = str.IndexOf('a', 3);
 
               Console.WriteLine(index);
               Console.ReadKey();*/
            #endregion
            //Console.WriteLine (string.IsNullOrEmpty(null) ? "yes" : "no");
 
          /*  string[] names = { "張三", "李四", "王五", "趙六", "田七" };
            //張三|李四|王五|趙六|田七
            string str =  string.Join("|", names);
            Console.WriteLine(str);
            Console.ReadKey();*/
 
 //課上練習2:接收用戶輸入的一句英文,將其中的單詞以反序輸出。      「I love you"→「I evol uoy"
            //string str = "Chinese food is best food";
            ////得到要翻轉的單詞 按照空格分割
            //string[] strNew = str.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
            //for (int i = 0; i < strNew.Length; i++)
            //{
            //    char[] chs = strNew[i].ToCharArray();
            //    for (int j = 0; j < chs.Length / 2; j++)
            //    {
            //        char temp = chs[j];
            //        chs[j] = chs[chs.Length - 1 - j];
            //        chs[chs.Length - 1 - j] = temp;
            //    }
 
            //    strNew[i] = new string(chs);
            //}
            ////把空格安插到字符串數組中每一個元素的後面
            //str = string.Join(" ", strNew);
            //Console.WriteLine(str);
            //Console.ReadKey();
  //課上練習4:把csv文件中的聯繫人姓名和電話顯示出來。簡單模擬csv文件,csv文件就是使用,分割數據的文本,輸出:
 
 
            //string[] lines = File.ReadAllLines(@"C:\Users\SpringRain\Desktop\電話.txt", Encoding.Default);
            //for (int i = 0; i < lines.Length; i++)
            //{
            //    //將雙引號替換成""
            //     lines[i] = lines[i].Replace("\"", "");
            //    //將逗號和分號去掉
            //    string[] linesNew = lines[i].Split(new char[] { ',', ';' }, StringSplitOptions.RemoveEmptyEntries);
            //    Console.WriteLine("姓名:" + linesNew[0] + linesNew[1] + " 電話:" + linesNew[2]);
            //}
 /* string str = "一日,天氣炎熱。兩香蕉在路上散步,一香蕉抱怨道:「好熱阿,好熱阿。」遂脫衣。另外一香蕉遂倒";
            int index = str.IndexOf("香蕉");
            Console.WriteLine("香蕉第一個出現的位置{0}",index);
            int count=1;
            while(index!=-1)
            {
                count++;
                index = str.IndexOf("香蕉", index + 1);
                if(index==-1)
                {
                    break;
                }
                Console.WriteLine("第{0}次出現的香蕉的位置是{1}",count,index);
            }
            Console.ReadKey();*/
 
  等號和Equals的區別
   Person p1 = new Person() { Name = "劉德華", Age = 18 };
  Person p2 = new Person() { Name = "劉德華", Age = 18 };
//if (p1.Equals(p2)) //這是不相等的Equals默認比較的是地址,
            //{
            //    Console.WriteLine("相等");
            //}
            //else
            //{
            //    Console.WriteLine("不相等");
            //}
 class Person
    {
        public string Name { get; set; }
        public int Age { get; set; }
   }
若是讓他們比較值那就:::重寫
 public override bool Equals(object obj)
        {
            Person person = obj as Person;
            if (this.Name == person.Name && this.Age == person.Age)
            {
                return true;
            }
            else
            {
                return false;
            }
        }
StringBuilder sb = new StringBuilder();
            //sb.Append("123");
            //sb.Append("張三");
Console.Writeline(sb);顯示123張三
 
 
Person p1 = new Person() { Name = "劉德華", Age = 18 };
  class Person
    {
        public string Name { get; set; }
        public int Age { get; set; }
     }
 Console.WriteLine(p1.ToString());//這個對象所在的類的命名空間
 
原文地址:http://www.cnblogs.com/lrzr/archive/2015/05/05/4480687.html
相關文章
相關標籤/搜索