C#字符串學習筆記


前言:記得我們老師說過一句話,對字符串的學習程度就是當別人打你一拳你知道痛的情況,所以字符串的處理我們必須學的差不多,這幾篇博客完全是我的學習過程中記錄的筆記,在這里分享一下讓很多剛開始學習.net編程的人能夠很快的學會怎么處理字符串

  1. string的構造方法

(1) String和string意思一樣,只是String是.net FrameWork提供的,而string是C#語言提供的

 (2)字符串是不可變的    

 class Program
{
        static void Main(string[] args)
       {
               string str = "123456";
              (*)string s1 = new string(new char[] { '我', '是', '韓', '迎', '龍' }); //輸出字符串
              (*)string s2 = new string('0', 10);  //輸出10個0
              Console.WriteLine(s1);
              Console.WriteLine(s2);
              Console.WriteLine(5.ToString("00000")); //前面補0
              string str1 = "韓閃閃";
              char[] chs = str1.ToCharArray();
              for (int i = 0; i < chs.Length; i++)
               {
                      if (chs[i] == '閃')
                     {

                             chs[i] = '珊';

                       }

                }

                str1 = new string(chs);

                Console.WriteLine(str1);

                Console.ReadKey();

        }

}
  1. 字符串的方法和常量

(1) 字符串賦初值的三種方法

     string str = "";

     string str1 = string.Empty;

     string str2 = null;

(2)判斷字符串是否為空

     Console.WriteLine(string.IsNullOrEmpty(string.Empty));

(3)字符串拘留池(駐留池)

     使用字符串的時候,如果字符串相同,那么所有變量都指向同一個地方

(4)字符串的比較方法

     1)比較兩個字符串可以使用==或者Equals

     2)Equals的使用

            ->靜態版本  string.Equals(object objA,object objB[,StringComparison com]);

            ->實例版本  str.Equals(object objA);

     3)一個靜態的方法 Compare

            ->string.Compare(str1,str2)

                   str1>str2   1

                   str1=str2   0

                   str1<str2   -1

(5)全部轉換為小寫,或者大寫  ToLower,ToUpper

     string str="assdfdSDS";

     str=str.ToUpper();

     Console.WriteLine(str); //全部變成大寫輸出

(6)去掉兩端的空格和指定的元素

     string str=" 1234343 ";

     str=str.Trim();

     1)Trim(params char[] chs)

              string str = "  11154544dfddf4351111  ";

       str = str.Trim(' ', '1');

       Console.WriteLine(str);

      //輸出結果:54544dfddf435

(7)字符串的合並和分隔

     1)合並

            string[] str = { "韓迎龍", "李瀟絮", "小李飛刀" };

            string s = string.Join("|", str);

            Console.WriteLine(s);

            Console.ReadKey();

     2)分隔

            語法:

                   string[] <string>.Split(params char[] chs)

                   string[] <string>.Split(new char[] chs,StringSplitOptions.RemoveEmpty)

                   string s = "韓迎龍|23|男|女";

                   string[] str = s.Split('|');

                   Console.ReadKey();

(8)判斷字符串的長度

     1)語法:<string>.Length;

     2)字符串可以像數組一樣使用"下標"訪問(索引)

            for(int i=0;i<str.Length;i++)

            {

                   Console.WriteLine(str[i]);

            }

(9)字符串查找

     1)判斷是否包含 Contains

            ->語法:bool <string>.Contains(string str);

string str = "張三,韓迎龍,李四,王五,馬六,楊七";

 if (str.Contains("韓迎龍"))

 {

       Console.WriteLine("查找到了");

}

else

{

       Console.WriteLine("沒找到");

}

            ->模擬Contains的實現(很局限)

static bool MyContains(string src, char cmp)

{

         bool isTrue = false;

         for (int i = 0; i < src.Length; i++)

         {

                  if (src[i] == cmp)

                 {

                        isTrue = true;

                        break;

                 }

       }

        return isTrue;

}

     2)IndexOf 尋找索引

            ->語法:

                   int <string>.IndexOf(char ch);

                   int <string>.IndexOf(char ch[,int startIndex]);

                   int <string>.IndexOf(string str[,int startIndex]);

                          string str = " 好好學習,天天向上";

                          int indeof = str.IndexOf('向');

            ->模擬MyIndex的算法(很局限)                   

static int MyIndex(string src, char cmp)

{

       int index = -1;

       for (int i = 0; i < src.Length; i++)

      {

                 if (src[i] == cmp)

               {

                        index = i;

                         break;

                }

         }

         return index;

}

     3)找出字符串中所有的"e"  

static void Main(string[] args)

{

       string str = "asfseeefsafserefeefsde";

       int index = -1;

       do

      {

              index = str.IndexOf('e', index + 1);

              if (index != -1)

              {

                       Console.WriteLine(index);

               }

     } while (index != -1);

}    

(10)LastIndexOf 從右邊往左邊找

      string str = "32errrwefsfsd";

    int index = str.LastIndexOf('e'); //輸出7

(11)子字符串

     1)語法:string <string>.SubString(開始的索引,字符串的長度);

                   string <string>.SubString(開始的索引);

     2)案例:

            string str = @"F:\heima\practice\string.exe";

       int start = str.IndexOf('\\');

       int length = str.IndexOf('\\', start + 1) - start;

       string s = str.Substring(start + 1, length - 1);

     3)跑馬燈的效果         

string str = "北京歡迎您  ";

while (true)

{
           Console.Clear();

           str = str.Substring(1) + str.Substring(0, 1);

           Console.WriteLine(str);

           System.Threading.Thread.Sleep(200);

}

字符串的插入,移除,替換

              1)insert

                     string str = "時間就是一把殺豬刀啊";

            str = str.Insert(0, "世界上");

              2)remove

                     string str = "時間就是一把殺豬刀啊";

            str = str.Remove(0, 2);

              3)replace

                     string str = "時間就是一把殺豬刀啊";

            str = str.Replace("時間", "小賢");

       (13)判斷結束和開始

              1)判斷字符<string>串是否已某字符串開始或結束

              2)bool <string>.StartsWith(string str);

              3)bool <string>.EndsWith(string str);             

1)第一個案例

 string[] str = {"白天不懂夜的黑.mp3",

                 "夢想的力量.mp3",

                  "舊夢重彈.wma",

                  "我相信.mp3" 

               };

  for (int i = 0; i < str.Length; i++)

  {

        if (str[i].EndsWith(".mp3"))

        {

             Console.WriteLine(str[i] + "下載成功");

        }

        else

        {

               Console.WriteLine(str[i] + "格式不正確");

         }

}

 2)第二個案例

static void Main(string[] args)

{

    string path1= "http://www.cnblogs.com";

    string path2 = "http://www.cnblogs.com/";

    string file = "舊夢重彈.mp3";

    string downfile = GetFileName(path1, file);

     Console.WriteLine(downfile);

     Console.ReadKey();

}

static string GetFileName(string path, string file)

{

     if (path.EndsWith("/"))

     {

           return path + file;

     }

      else

   {
             return path + '/' + file;

      }

}

(14)字符串的幾個練習題

   1)接收用戶輸入的字符串,將其中的字符以相反的順序輸出"韓迎龍"->"龍迎韓"

static void Main(string[] args)

{

         string str = "韓迎龍";

        //第一種寫法

         for (int i = str.Length-1; i  >=0; i--)

       {

               Console.Write(str[i]  );

       }

        //第二種寫法

        string strname = Exercise(str);

        Console.WriteLine(strname);

}

static string Exercise(string str)

{

        char[] chs = str.ToCharArray();  //變成char數組

          for (int i = 0; i < chs.Length / 2; i++)

           {

                  char temp = chs[i];

                   chs[i] = chs[chs.Length - i - 1];

                   chs[chs.Length - i - 1] = temp;

             }

              return new string(chs);

}

   2)接受用戶輸入的一句英文,將其中的單詞反序輸出。"I Love you"->"I evol uoy"

static void Main(string[] args)

{

      string str = "I Love You";

      str = Exercise(str);

       Console.WriteLine(str);

}

static string Exercise(string str)

{

          string[] strs = str.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);

            for (int i = 0; i < strs.Length; i++)

            {

                     strs[i] = Exercisetwo(strs[i]);

            }

             return string.Join(" ", strs);

 }

static string Exercisetwo(string str)

{

        char[] chs = str.ToCharArray();  //變成char數組

         for (int i = 0; i < chs.Length / 2; i++)

         {

                char temp = chs[i];

                 chs[i] = chs[chs.Length - i - 1];

                  chs[chs.Length - i - 1] = temp;

          }

          return new string(chs);

}

    3)"2012年12月21日"從日期字符串中把年月日分別取出來,打印到控制台     

static void Main(string[] args)

{

       string str = "2012年10月03日";

       string[] strs = str.Split(new char[] { '年', '月', '日' });

        Console.WriteLine(string.Join(" ", strs));

        Console.ReadKey();

}

   4)把csv文件中的聯系人的姓名和電話顯示出來,簡單模擬

     注:首先將一個name.txt結構的文檔放在項目的Bin的Debug目錄下面,使其代碼能夠讀到這個,里面的結構是"韓迎龍|男|23"

static void Main(string[] args)

{

        string[] lines = File.ReadAllLines("name.txt");

         for (int i = 0; i < lines.Length; i++)

          {

                   string[] strTemp = lines[i].Split(new char[] { '|' }, StringSplitOptions.RemoveEmptyEntries);

                     Console.WriteLine("姓名:{0},年齡:{1}", strTemp[0], strTemp[2]);

         }

}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM