c#之字串處理
字串大家都不陌生,今天就來說一下字串的幾種處理方式
字串的建立:
1.使用String s=""的方式
2.使用字串的構造方法
3.Copy
4.Clone的方式
示例:
String s = "abc";
String s = new String("fgh".ToCharArray());
String copyS = String.Copy(s);
String newS = s.Clone() as String;
字串的特性:
String類用來比較兩個字串、查詢和抽取串中的字元或子串。
string可以看做是char的只讀陣列。
C#中字串有一個重要的特性:不可變性,字串一旦宣告就不再可以改變。
注意:對該類物件的任何操作都將返回一個新的字串物件 除了Clone Clone直接將該字串的引用返回了
示例:
String s1 = "a";
String s2 = s1 + "b";
Console.WriteLine(Object.ReferenceEquals (s1,s2));
誰說字串不可變?string s = "abc";s="123“;,s這不是變了嗎?
要區分變數名和變數指向的值的區別。程式中可以有很多字串,然後由字串變數指向他們,變數可以指向其他的字串,但是字串本身沒有變化。字串不可變性指的是記憶體中的字串不可變,而不是變數不變。
string s10 = s;//s10指向s指向的字串,而不是s10指向s,哪怕s以後指向了其他記憶體,那麼s10還是指向從前s指向的字串。

字串的遍歷:
字串是一個字元陣列
所以可以用遍歷陣列的方式遍歷字串的每一個位子的字元
示例:
String s1 = "123456";
for (int i=0;i<s1.Length;i++)
{
Console.WriteLine(s1[i]);
}
注意:
字串中的字元位置和陣列一樣從下標0開始。
字串和陣列一樣有Length屬性。
字串和陣列一樣可以按索引的方式訪問。
字串的大小寫轉換:
ToLower 方法 (字串變為小寫)
ToUpper 方法(字串變為大寫)
一般用於不區分大小寫比較
舉個例子:

通過這個方法,假如兩位同學喜歡同一款遊戲但輸入時字母大小寫不一致也可以返回相同的遊戲名。
字串的擷取:
Substring 方法
Substring(Int32 s) (從當前索引位置s開始一直到末尾) .
Substring(Int32 s, Int length)(從當前索引位置s開始一直要求的長度length).
注意: 索引是從零開始的。
例子:

SubstringTest("as123jhhj5gh7"); //從當前索引位置開始一直到末尾
結果為:

字串的切割:
Split(過載的引數列表)
用於將字串按某字元或者某字串進行分割
例子:


當我們的文字檔案中儲存了多個文章標題、作者,標題和作者之間用若干空格(數量不定)隔開,每行一個,標題有的長有的短,輸出到控制檯的時候最多標題長度10,如果超過10,則擷取長度8的子串並且最後新增“...”,加一個豎線後輸出作者的名字。

如上所示
字串的替換:
Replace 方法
示例: 遮蔽掉敏感詞彙
當玩家玩遊戲想在公屏裡罵人時。會出現“*****”字樣,這是怎麼回事呢?
如下圖所示


顯示結果
字串的查詢:
IndexOf 方法
LastIndexOf 方法
StartsWith 方法 判斷以什麼作為開頭。
EndsWith 方法 判斷以什麼作為結尾。

字串內的字元排序(只按字母序不論大小寫)

如何判斷一個字串是否為另一個字串的子串

如何驗證一個字串中的每一個字元均在另一個字串中出現過

根據完整的路徑從路徑中分離檔案路徑、檔名及副檔名
例:"c:\dir1\1.txt"=>"c:\dir1" "1" ".txt"

接收使用者輸入的字串,將其中的字元進行排序(升序),並以逆序的順序輸出,“cabed”→"abcde"→“edcba”。
