字符串的使用(常用方法)


字符串的使用(常用方法)

1、字符串的定義
 語法:
  string <name>;
  <name> = <value>;
  或
  string <name> = <value>;

 字符串是引用類型,在定義
  string <name>;
 的時候在棧空間中,定義了一個<name>的空間,該空間存放一個地址
 當寫到
  <name> = "The C# Programming Language";
 的時候,會在堆內存分配一個空間,存放字符串"The C# Programming Language",並將首地址賦值給<name>
 因此<name>指向定義的字符串
 
2、字符串的聲明
 字符串string對應MSIL(CTS)中的String,實際上是一個類
 那么以前了解到,類需要使用new <構造方法>()來進行實例化,同樣字符串也行(這里只介紹一種)
  string <name> = new string(new char[] {...});
 注:這里String與string得到的效果一樣
 
 這里有個應用
  字符串是不可變的,在內存中字符串一旦生成,將不會改變
  即使之前使用的str1 + str2也只是生成了另一個字符串
  那么要修改字符串,怎么處理呢?
   這里有個方法
    <strName>.ToCharArray();
   該方法會將字符串,變成一個char類型的數組,因此需要用一個char類型的數組接收

  例:修改一個字符串里面的內容
   char[] ch = <strName>.ToCharArray();
   // 處理字符數組,完成修改目的
   <strName> = new string(ch);

3、字符串可以用索引訪問
 字符串,原本就是排在一起的字符,C#提供了用“下標”(索引)來訪問字符串中的字符
 例如:
  string str = "jiangkun";
  這里內存中將“j”分配編號0,“i”分配編號1,然后依次增加...
  因此,如果需要訪問k,數一數,編號是5,所以可以這么來
   char temp = str[5];
  那么得到的就是字符“k”
 
 字符串也有一個Length屬性,可以得到字符串的長度


4、常見的字符串方法

4.1 字符串大小寫(字符)
  string <strName>.ToUpper();
  string <strName>.ToLower();
 例:在等待用戶輸入的時候,常常不考慮用戶輸入的用戶名大小(或一個程序中規定使用的大小寫)
  可以將用戶的輸入全部轉換成小寫、或大寫再來進行比較
  如:
  Console.WriteLine("請輸入用戶名");
  string uid = Console.ReadLine().ToLower();
  // 再將uid與系統中的數據進行比較

4.2 移除首尾指定字符
  方法原型
   string <strName>.Trim();  // 移除首尾的空格
   string <strName>.TrimStart(); // 移除開頭的空格
   string <strName>.TrimEnd();  // 移除結尾的空格
  如果要指定移除的內容,可添加一個char數組作為參數
   string <strName>.Trim(char[] ch);
 
 例:在用戶輸入的時候,一般不考慮輸入兩邊的空格,而使用Trim()方法

4.3 字符串的比較
 Compare()方法
  方法原型
   int string.Compare(string str1,string str2);
  按照字典排序比較
   當str1 > str2時,返回1
   當str1 = str2時,返回0
   當str1 < str2時,返回-1
  
  注:int string.Compare(string str1,string str2,bool ignoreCase)表示是否區分大小寫
   這里true表示不區分大小寫,默認為false
 
 Equals()方法
  方法原型
   bool <strName>.Equals(string str);
  比較如果相等返回true,否則返回false
  
  注:bool <strName>.Equals(string str, StringComparison.OrdinalIgnoreCase)表示不區分大小寫
 
 注:如果僅僅比較兩個字符串是否相等,還是使用“==”比較簡單
 例如:
  Console.WriteLine("請輸入一個字符串");
  string str1 = Console.ReadLine();
  Console.WriteLine("請輸入第二個字符串");
  string str2 = Console.ReadLine();
  // 不考慮大小寫的比較
  bool isEqual = str1.ToLower() == str2.ToLower();

4.4 字符串的合並與分割
 合並Join方法
  將數組strArr中的內容拼接成一個字符串,並在對應數組的每兩項間添加分隔符str
   string.Join(str,strArr);
  方法原型
   string string.Join(string str,string[] strArr);
 
 字符串分割Split方法
  方法原型:
   string[] <strName>.Split(params char[] separator);
  將字符串<strName>以separator數組中的字符分割,分割后得到的內容存到一個數組中
  
  例:
   // 分析這句話,提取這句話的單詞
   string str = "Hello, How are you?";
   string[] words = str.Split(' ',',','?');
  
  注:返回的數組中可以有空字符串項,如果要去掉這些空字符串項,可以使用
   string[] <strName>.Split(char[] separator,StringSplitOptions.RemoveEmptyEntries);

  因此例子可改為
   string str = "Hello, How are you?";
   string[] words = str.Split(new char[]{' ',',','?'},StringSplitOptions.RemoveEmptyEntries);

4.5 字符串查找
  Contains方法
   方法原型:
    bool <strName>.Contains(string str);
   表示字符串<strName>中是否包含str,如果包含,返回true,否則返回false
  例:
   Console.WriteLine("隨便輸入一串字母");
   string str = Console.ReadLine();
   if(str.Contains("abc"))
   {
    Console.WriteLine("字符串{0}中包含{1}",str,"abc");
   }
   else
   {
    Console.WriteLine("字符串{0}中不包含{1}",str,"abc");
   }
  IndexOf方法
   常用的兩種形式:
    int <strName>.IndexOf(string str);     // 從頭開始,出現第一次的下標
    int <strName>.IndexOf(string str,int startIndex); // 從startIndex開始,出現第一次的下標
   如果沒有找到則返回-1
  例:
   string str = "C#語言基礎,講師蔣坤";
   int res1 = str.IndexOf("蔣坤");
   int res2 = str.IndexOf("蔣 坤");
   Console.WriteLine(res1 + "\n" + res2);
   
   注:LastIndexOf方法從最后一個開始匹配
  
  IndexOfAny方法
   方法原型:
    int <strName>.IndexOfAny(char[] anyOf);
   尋找字符數中的所有內容,返回第一個的位置
   
   同樣有兩個參數的重載
    int <strName>.IndexOfAny(char[] anyOf, int startIndex);

4.6 求子字符串
  方法原型
   string <strName>.Substring(int startIndex, int length);
  從字符串<strName>的startIndex位置開始提取長度為length的字符串,如果省略第二個參數表示一直到最后

4.7 字符串的插入、移除和替換
 4.7.1 插入
  在字符串<strName>的index位置上插入str,原來的字符依次后移,變成一個新的字符串
   <strName> = <strName>.Insert(index,str);
  方法原型為:
   string <strName>.Insert(int index, string str);
 
 4.7.2 移除
  在字符串<strName>中移除從startIndex開始,長度為length的字符串,剩下的字符按原序合並為一個新的字符串
   <strName> = <strName>.Remove(startIndex,length);
  方法原型為:
   string <strName>.Remove(int startIndex, int length);
  
  注:如果省略第二個參數,將移除startIndex后的所有字符串

 4.7.3 替換
  將字符串<strName>中的oldChar替換為newChar
   <strName> = <strName>.Replace(oldChar,newChar);
  方法原型:
   string <strName>.Replace(char oldChar, char newChar);
  同樣,這個替換的字符也可以是字符串
   string <strName>.Replace(string oldValue, string newValue);
4.8 判斷結束與開始
  判斷字符<strName>串是否以某字符串開始或結束
   bool <strName>.StartsWith(string str);
   bool <strName>.EndsWith(string str);


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


免責聲明!

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



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