C#中常見的字符串方法


1.1 字符串大小寫
 方法原型
  string <strName>.ToUpper();  //返回字符串轉換的大寫形式
  string <strName>.ToLower();  //返回字符串轉換的小寫形式
 例如:用戶在輸入用戶名的時候,可能會大小寫輸入混亂,但是我們可以轉換(全部轉換為大寫或者全部轉化為小寫)一下,
 使用戶也能夠登錄成功
     Console.Write("請您輸入用戶名:");
        //全部轉換為大寫
        string username = Console.ReadLine();
        string usernameupper = username.ToUpper();
        //全部轉換為小寫
        string usernamelower = username.ToLower();
        Console.WriteLine("大寫是:{0},小寫是:{1}", usernameupper, usernamelower); 

1.2 移除首尾指定字符
 Trim 移除一組指定字符的首尾匹配項
  方法原型
   (1)string <strName>.Trim();      //移除首尾的空格
    string str = " 韓迎龍 ";
    string firstendnullstr = str.Trim();
    Console.WriteLine(firstendnullstr.Length);   輸出信息:3
   (2)string <strName>.Trim(new char[]{'<char>'});   //移除首尾指定的字符(必須是首尾的字符)
    string str = "韓迎龍韓";
    string firstendnullstr = str.Trim(new char[] { '韓' });
    Console.WriteLine(firstendnullstr);   輸出信息:迎龍
 TrimStart 移除一組指定字符的開頭匹配項
  方法原型
   (1)string <strName>.TrimStart(); //移除開頭的空格
    string str = " 韓迎龍 ";
    string firstendnullstr = str.TrimStart();
    Console.WriteLine(firstendnullstr.Length);  輸出信息:4
   (2)string <strName>.TrimStart(new char[]{'<char>'}); //移除開頭指定的字符
    string str = "韓迎龍韓";
    string firstendnullstr = str.TrimStart(new char[] { '韓' });
    Console.WriteLine(firstendnullstr);     輸出信息:迎龍韓
 TrimEnd 移除一組指定字符的結尾指定項
  方法原型
   (1)string <strName>.TrimEnd();   //移除結尾的空格
    string str = " 韓迎龍 ";
    string firstendnullstr = str.TrimEnd();
    Console.WriteLine(firstendnullstr.Length);  輸出信息:4
   (2)string <strName>.TrimEnd(new char[]{'<char>'});
    string str = "韓迎龍韓";
    string firstendnullstr = str.TrimEnd(new char[] { '韓' });
    Console.WriteLine(firstendnullstr);     輸出信息:韓迎龍

1.3 字符串的比較
 Compare()方法
  方法原型
   (1) int Compare(String,String);   //比較兩個字符串對象
    int strCompare=string.Compare("sFsFsF","Sfsfsf"); //輸出信息:0
   (2) int Compare(string,String,Boolean)  //比較兩個字符串對象,是否忽略大小寫
    int  int dou = string.Compare("sdsSD", "sdsSd", true);   //輸出信息:0
   (3) int Compare(String,String,StringComparison) //參數指定比較是使用當前區域性還是固定區域性,
    是考慮還是忽略大小寫,是使用字排序規則還是序號排序規則。
    int dou = string.Compare("dsdssdD", "dsdssdd", StringComparison.OrdinalIgnoreCase); //輸出信息0
  按照字典排序進行比較
   如果strA>StrB,則返回的值大於0
   如果strA=strB,則返回的值等於0
   如果strA<strB,則返回的值小於0
 CompareOrdinal()方法,通過計算每個字符串中相應Char對象的數值來比較
  方法原型
   (1)int CompareOrdinal(String,String)  //通過計算每個字符串中相應的Char對象的數值來比較兩個字符串
    int dou = string.CompareOrdinal("a", "c");  //輸出結果是:-2
  也是按照字典排序
   如果strA>StrB,則返回的值大於0
   如果strA=strB,則返回的值等於0
   如果strA<strB,則返回的值小於0
 CompareTo()方法,將此實例與指定對象或者String進行比較,並且返回二者相對值的指示
  方法原型
   (1) int CompareTo(Object);  //將此實例與object進行比較
    MyClass my = new MyClass();
    string s = "sometext";
    try
    {
     int i = s.CompareTo(my);
    }
    catch (Exception ex)
    {
     Console.WriteLine(ex.Message);
    }
    public class MyClass { }    
    //輸出結果是:對象的類型必須是string類型
   (2) int CompareTo(string);  //將此實例與string進行比較
    string str = "a";
    int s = str.CompareTo("c");  //輸出結果是-1
  也是按照字典排序
   如果strA>StrB,則返回的值大於0
   如果strA=strB,則返回的值等於0
   如果strA<strB,則返回的值小於0
 Equals()方法,確定兩個String對象是否具有相同的值
  方法原則
   (1)bool Equals(Object); 確定此String實例是否與指定的對象具有相同的值
    StringBuilder sb = new StringBuilder("abcd");
    String str1 = "abcd";
    Console.WriteLine(str1.Equals(sb));
    輸出結果:False
   (2)bool Equals(String); 確定此實例是否與另一個指定的String對象具有相同的值
    string str1 = "abcd";
    Console.WriteLine(str1.Equals("abcd"));
    //輸出結果是True
   (3)bool Equals(String,String)  確定兩個指定的String對象是否具有相同的值
    Console.Write(string.Equals("1234", "1234"));
    //輸出結果是True
   (4)bool Equals(String,StringComparison)  確定此字符串是否與指定的 String 對象具有相同的值。
   參數指定區域性、大小寫以及比較所用的排序規則。
    string str="HanYingLong";
    Console.WriteLine(str.Equals("hanyinglong", StringComparison.OrdinalIgnoreCase));
    //輸出結果是True
   (5)bool Equals(String,String,StringComparison) 確定兩個指定的 String 對象是否具有同一值。
   參數指定區域性、大小寫以及比較所用的排序規則。
    //Console.WriteLine(string.Equals("AdssdS", "adssds", StringComparison.OrdinalIgnoreCase));
    輸出結果True
  返回值是bool類型,所以我們能夠判斷出來如果結果相等的話就返回True,否則返回False
  注釋:如果僅僅比較兩個字符串是否相等,還是使用"=="比較簡單
   Console.WriteLine("請輸入一個字符串");
   string str1 = Console.ReadLine();
   Console.WriteLine("請輸入第二個字符串");
   string str2 = Console.ReadLine();
   // 不考慮大小寫的比較
   bool isEqual = str1.ToLower() == str2.ToLower();
1.4 字符串的合並和分割
 合並Join方法:在指定 String 數組的每個元素之間串聯指定的分隔符 String,從而產生單個串聯的字符串。
  方法原型
   詳細介紹:將數組strArr中的內容拼接成一個字符串,並在對應數組的每兩項間添加分隔符str
      string.Join(str,strArr);
   (1) string string.Join(String,String[]);
    Console.WriteLine(string.Join("迎", new string[] { "韓", "龍","我" }));
    Console.WriteLine(string.Join("迎", new char[] { '韓', '龍', '我' }));
    //輸出結果是:韓迎龍迎我
   (2) string string.Join(String,String[],Int32,Int32)
    String[] val = { "apple", "orange", "grape", "pear" };
    String sep = ",";
    String result = String.Join(sep, val, 1, 2);
    Console.WriteLine(result);
   //輸出結果是orange,grape
 分割Split方法:返回的字符串數組包含此實例中的子字符串
  方法原型
   (1)string[] Split(Char[]) //返回的字符串數組包含此實例中的子字符串
    string str = "I Have a Dream";
    string[] divisionstr = str.Split(new char[] { ' ' });
    foreach (string s in divisionstr)
    {
     Console.Write(s);
    }
    //輸出結果是:IHaveDream,去掉了空格
   (2)string[] Split(Char[],Int32)  //返回的字符包含此實例中的子字符串,參數指定返回的子字符串的最大數量
    string str = "I Have a Dream";
    string[] divisionstr = str.Split(new char[] { ' ' }, 2);
    foreach (string s in divisionstr)
    {
     Console.Write(s);
    }
    //輸出結果:IHave a Dream  ,int count將字符串截為幾段的意思
   (3)string[] Split(Char[],StringSplitOptions)  //返回的字符串包含此實例中的子字符串,參數指定是否
   返回空數組元素
    string str = " 梅西| 卡 卡|小龍 ";
    string[] divisionstr = str.Split(new char[] { '|',' ' }, StringSplitOptions.RemoveEmptyEntries);
    foreach (string s in divisionstr)
    {
     Console.Write(s);
    }
    //輸出結果是:梅西卡卡小龍
   (4)string[] Split(String[],StringSplitOptions) //返回的字符串包含此實例中的子字符串,參數指定是否
   返回空數組元素
    string str = "梅西|卡卡|小龍";
    string[] divisionstr = str.Split(new string[] { "|" }, StringSplitOptions.RemoveEmptyEntries);
    foreach (string s in divisionstr)
    {
     Console.Write(s);
    }
    //輸出結果是:梅西卡卡小龍
   (5)string[] Split(Char[],Int32,StringSplitOptions) //返回的字符串數組包含此字符串中的子字符串,參數
   指定要返回子字符串的最大數量,以及是否要返回空數組元素。
    string str = "梅西|卡卡|小龍";
    string[] divisionstr = str.Split(new char[] { '|' }, 2, StringSplitOptions.RemoveEmptyEntries);
    foreach (string s in divisionstr)
    {
     Console.Write(s);
    }
    //輸出結果是:梅西卡卡|小龍
   (6)string[] Split(String[],Int32,StringSplitOptions) //返回的字符串數組包含此字符串中的子字符串,參數
   指定要返回子字符串的最大數量,以及是否要返回空數組元素。
    string str = "梅西|卡卡|小龍";
    string[] divisionstr = str.Split(new string[] { "|" }, 2, StringSplitOptions.RemoveEmptyEntries);
    foreach (string s in divisionstr)
    {
     Console.Write(s);
    }
    //輸出結果是:梅西卡卡|小龍
1.5 字符串的查找
 Contains方法:返回一個值,該值指示指定的String對象是否出現在此字符串
  方法原型
   bool <strName>.Contains(String value); //表示字符串<strName>中是否包含value,如果包含,返回True,否則返回False
    Console.Write("請輸入一個字符串:");
    string str = Console.ReadLine();
    if (str.Contains("abc"))
    {
     Console.WriteLine("字符串{0}包含{1}", str, "abc");
    }
    else
    {
     Console.WriteLine("字符串{0}不包含{1}", str, "abc");
    }
 IndexOf方法:String或一個或多個字符在此字符串中的第一個匹配項
  方法原型
   (1)int <strName>.IndexOf(String)  指定字符在此字符串中的第一個匹配項的索引
    string str = "讓世界變得更美好";
    int res = str.IndexOf("好");
    Console.WriteLine(res);
    //輸出結果是:7
   (2)int <strName>.IndexOf(String,Int32) 指定字符串中的第一個匹配項的索引,該搜索從指定字符位置開始
    string str = "讓世界變得更美好";
    int res = str.IndexOf("世界變得", 0);
    Console.WriteLine(res);
    //輸出結果是:1
 LastIndexOf方法:String或一個活多個字符在此字符串中的最后一個一個匹配項
  方法原型
   (1)int <strName>.LastIndexOf(String) 指定字符在字符串中的最后一個匹配項的索引
    string str = "讓世界好得更美好";
    int res = str.LastIndexOf("好");
    Console.WriteLine(res);
    //輸出結果:7
   (2)int <strName>.LastIndexOf(String,Int32) 指定字符串中的第一個匹配項的索引,該搜索從指定字符位置開始
    string str = "讓世界好得更好美好";
    int res = str.LastIndexOf("得", 4);
    Console.WriteLine(res);
    //輸出結果是:4
 IndexOpAny方法 指定字符數組中的任意字符在此實例中第一個匹配項的索引
  方法原型
   (1)int <strName>.IndexOpAny(Char[]) 指定字符數組中的任意字符在此實例中第一個匹配項的索引。
    string str = "地球很美好,我們很喜歡";
    int res = str.IndexOfAny(new char[] { 's', '我' });
    Console.WriteLine(res);
    //輸出結果:0
   (2)int <strName>.IndexOpAny(Char[],Int32) 指定字符數組中的任意字符在此實例中第一個匹配項的索引。
   搜索從指定字符位置開始
    string str = "地球很美好,我們很喜歡";
    int res = str.IndexOfAny(new char[] { '球', '我', '喜' }, 0);
    Console.WriteLine(res);
    //輸出結果:1
   (3)int <strName>.IndexOpAny(Char[],Int32,Int32)指定字符數組中的任意字符在此實例中第一個匹配項的索引。
   搜索從指定字符位置開始,並檢查指定數量的字符位置。
    string str = "地球很美好,我們很喜歡";
    int res = str.IndexOfAny(new char[] { '球', '我', '喜' }, 2, 5);
    Console.WriteLine(res);
    //輸出結果:6
 LastIndexOpAny方法和LastIndexOf方法的使用基本相同
1.6 求子字符串
 方法原型
  (1)string <strName>.SubString(Int32)  檢索字符串,子字符串從指定的字符開始
   string str = "我愛中國";
            string res = str.Substring(2);
            Console.WriteLine(res);
   輸出結果:中國
  (2)string <strName>.SubString(Int32,Int32) 檢索字符串,子字符串從指定的字符開始,並且具有指定的長度
   string str = "我愛中國,中華名族萬歲";
            string res = str.Substring(2, 5);
            Console.WriteLine(res);
   輸出結果:中國,中華
 總結:string <strName>.SubString(int startIndex,int length);
 從字符串strName的startIndex位置開始提取長度為length的字符串,如果省略第二個參數則表示一直到最后
1.7 字符串的插入移除和替換
  字符串的插入
   方法原型
    string <strName>.Insert(Intzv32 startIndex,string value)在此實例中的指定索引位置插入一個指定的 String 實例。
     string str = "我中國";
     string res = str.Insert(1, "愛");
     Console.WriteLine(res);
     輸出結果:我愛中國
   總結:在字符串<strName>的startIndex位置上插入value,原來的字符依次后移,變成一個新的字符串
  字符串的移除
   方法原型
    (1)string <strName>.Remove(Int32 startIndex) 刪除此字符串中從指定位置到最后位置的所有字符
     string str = "我愛中國日本大和民族";
     string res = str.Remove(4);
     Console.WriteLine(res);
     輸出結果:我愛中國
    (2)string <strName>.Remove(Int32 StartIndex,Int32 Length)  從指定位置開始刪除指定數目的字符
     string str = "我愛中國日本&大和民族";
     string res = str.Remove(4, 2);
     Console.WriteLine(res);
     
     輸出結果:我愛中國&大和民族
   總結:從字符串<strName>中移除StartIndex開始,長度為Length的字符串,剩下的字符按照原來的順序重新排成
    一個新的字符串,如果省略第二個參數,將移除StartIndex后面的所有的字符串
  字符串的替換
   方法原型
    (1)string <strName>.Replace(char oldchar,char newchar)  將字符串<strName>中的oldchar替換為newchar
     string str = "我愛中華&美國";
     string res = str.Replace('&', '和');
     Console.WriteLine(res);
     輸出結果:我愛中華和美國
    (2)string <strName>.Replace(string oldvalue,string new value) 將字符串<strName>中的oldvalue替換為newvalue
     string str = "我愛中華&美國";
     string res = str.Replace("美國", "天朝");
     Console.WriteLine(res);
     輸出結果是:我愛中華&天朝  
1.8 判斷開始和結束
 StartsWith開始
  方法原型
   bool <strName>.StartsWith(String value) 確定此實例的開頭是否與指定的字符串匹配
    string str = "我愛中華";
    bool istrue = str.StartsWith("我哎");
    Console.WriteLine(istrue);
    輸出結果是:False
 EndsWidth結束
  方法原型
   bool <strName>.EndsWith(string value) 確定此實例的結尾是否與指定的字符串匹配
    string str = "我愛中華";
    bool istrue = str.EndsWith("中國");
    Console.WriteLine(istrue);
    輸出結果:False
1.9 字符串的賦值
 Copy方法
  方法原型
   string String.Copy(string str);  創建一個與指定String具有相同值的String的新實例
    string str = "韓迎龍";
    string res = string.Copy(str);
    Console.WriteLine(res);
    輸出結果是:韓迎龍
 CopyTo方法
  方法原型
   string <strName>.CopyTo(int sourceIndex,char[] destination,int destinationIndex,int count)
   //將指定數目的字符從此實例中的指定位置復制到字符數組中的指定位置
   string dest = "Hello world";
            string source = "Goodbye China";
            char[] destArray = dest.ToCharArray();//將dest變成字符數組
            source.CopyTo(8, destArray, 6, 5);//從source的第8個字符起復制5個字符並從destArray的第6個位置開始放
            dest = new string(destArray);//這時dest為"Hello China"
            Console.WriteLine(dest);
   輸出結果是:Hello China

總結:字符串具有不可變性,對字符串的修改,實際上都是重新得到一個字符串,重新賦值


免責聲明!

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



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