
一、字元串
一種資料類型,其實就是string類型,用雙引号包起來。
這裡主要講得是對字元串的操作。
例如截取字元串中的内容、查找字元串中的内容等。
常用的字元串操作包括擷取字元串的長度、查找某個字元在字元串中的位置、替換字元串中的内容、拆分字元串等。
在字元串操作中常用的屬性或方法如下表所示。
編号 | 屬性或方法名 | 作用 |
---|---|---|
1 | Length | 擷取字元串的長度,即字元串中字元的個數 |
2 | IndexOf | 傳回整數,得到指定的字元串在原字元串中第一次出現的位置 |
3 | LastlndexOf | 傳回整數,得到指定的字元串在原字元串中最後一次出現的位置 |
4 | Starts With | 傳回布爾型的值,判斷某個字元串是否以指定的字元串開頭 |
5 | EndsWith | 傳回布爾型的值,判斷某個字元串是否以指定的字元串結尾 |
6 | ToLower | 傳回一個新的字元串,将字元串中的大寫字母轉換成小寫字母 |
7 | ToUpper | 傳回一個新的字元串,将字元串中的小寫字母轉換成大寫字母 |
8 | Trim | 傳回一個新的字元串,不帶任何參數時表示将原字元串中前後的空格删除。參數為字元數組時表示将原字元串中含有的字元數組中的字元删除 |
9 | Remove | 傳回一個新的字元串,将字元串中指定位置的字元串移除 |
10 | TrimStart | 傳回一個新的字元串,将字元串中左側的空格删除 |
11 | TrimEnd | 傳回一個新的字元串,将字元串中右側的空格删除 |
12 | PadLeft | 傳回一個新的字元串,從字元串的左側填充空格達到指定的字元串長度 |
13 | PadRight | 傳回一個新的字元串,從字元串的右側填充空格達到指定的字元串長度 |
14 | Split | 傳回一個字元串類型的數組,根據指定的字元數組或者字元串數組中的字元 或字元串作為條件拆分字元串 |
15 | Replace | 傳回一個新的字元串,用于将指定字元串替換給原字元串中指定的字元串 |
16 | Substring | 傳回一個新的字元串,用于截取指定的字元串 |
17 | Insert | 傳回一個新的字元串,将一個字元串插入到另一個字元串中指定索引的位置 |
18 | Concat | 傳回一個新的字元串,将多個字元串合并成一個字元串 |
二、擷取字元串長度(string.Length)
就是有string這個類型的類,裡面有一個Length的屬性,可以直接輸出一個字元串的個數。
表達形式:
字元串.Length
例:
string a = "abc0";Console.WriteLine(a.Length); //4
輸出字元串的個數,也就是長度。經常用于for循環的判斷。
1.例
在 Main 方法中從控制台輸入一個字元串,輸出該字元串的長度,以及字元串中的第一個字元和最後一個字元。
class Program{ static void Main(string[] args) { string str = Console.ReadLine(); Console.WriteLine("字元串的長度為:" + str.Length); Console.WriteLine("字元串中第一個字元為:" + str[0]); Console.WriteLine("字元串中最後一個字元為:" + str[str.Length - 1]); }}
分析:
第5行是,手動輸入一個字元串。
第6行是,輸出輸入字元串的個數。
因為是從1開始數,是以在導出字元時,還需要-1;
第7行是,輸出字元串的第一個字元。
由于計數是從0開始,因而第一個就是0;
第8行是,輸出字元串的最後一個字元。
由于最後一個不确定,是以需要先計算長度,然後-1,再輸出。
因為字元串可以了解成一個數組,是以也就可以通過str[下标]進行輸出字元。
2.例
在 Main 方法中從控制台輸入一個字元串,并将字元串中的字元逆序輸出。
class Program{ static void Main(string[] args) { string str = Console.ReadLine(); for(int i = str.Length - 1; i >= 0; i--) { Console.WriteLine(str[i]); } }}
這裡是通過減法的for循環來輸出周遊字元。
分析:
先手動輸入一個字元串。
然後進行for循環,最終進行輸出。
由于是倒叙,是以首先要計算出字元串的長度。
但字元串的長度是由1開始計算的,而字元輸出卻是從0開始計算的,是以這裡就需要-1.
而判斷時,就需要大于等于0,然後i--。
三、IndexOf和LastIndexOf:查找字元串中的字元
可以了解成,在一個已經寫好的類中,有這兩個函數。
IndexOf 方法得到的是指定字元串在原字元串中第一次出現的位置。
并把所在的位置數傳回出來。
例:
string str = “abc0”;int b = str.IndexOf("b");Console.WriteLine(b); //輸出的結果為1.//因為從0開始計數。
LastlndexOf 方法得到的是指定字元串在查找的字元串中最後一次出現的位置。
例:
string str = “abcb0”;int b = str.str.LastIndexOf("b");Console.WriteLine(b); //3//依舊還是從左邊開數,隻是會輸出最後一個字元的數。
需要注意的是字元串中的每個字元的位置是從 0 開始的。
無論是哪個方法,隻要指定的字元串在查找的字元串中不存在,結果都為 -1。
如果要判斷字元串中是否僅含有一個指定的字元串,則需要将 IndexOf 和 LastlndexOf 方法一起使用,隻要通過這兩個方法得到的字元串出現的位置是同一個即可。
1.例
在 Main 方法中從控制台輸入一個字元串,然後判斷字元串中是否含有 @, 并輸出 @ 的位置。
class Program{ static void Main(string[] args) { string str = Console.ReadLine(); if (str.IndexOf("@") != -1) { Console.WriteLine("字元串中含有@,其出現的位置是{0}", str.IndexOf("@") + 1); } else { Console.WriteLine("字元串中不含有@"); } }}
分析:
先手動輸入一行字元串,
然後判斷是否存在你需要的字元或字元串。
如果不為-1,就表示存在,然後輸出。
否則就輸出else的。
2.例
在 Main 方法中從控制台輸入一個字元串,判斷該字元串中是否僅含有一個 @。
根據題目要求,使用 IndexOf 方法查找第一個 @ 出現的位置與使用 LastlndexOf 方法查找 @ 在字元串中最後一次出現的位置相同即可,實作的代碼如下。
class Program{ static void Main(string[] args) { string str = Console.ReadLine(); int firstIndex = str.IndexOf("@"); int lastIndex = str.LastIndexOf("@"); if(firstIndex != -1) { if (firstIndex == lastIndex) { Console.WriteLine("在該字元串中僅含有一個@"); } else { Console.WriteLine("在該字元串中含有多個@"); } } else { Console.WriteLine("在該字元串中不含有@"); } }}
分析:
先判斷是否存在,第8行。如果不存在就輸出第21行。
然後再判斷第一次出現的位置和最後一次出現的位置是否相等。
也就是str.IndexOf("@");和str.LastIndexOf("@");進行對比。
如果為True,是以輸出第12行。
否則就輸出16行。
四、字元串替換函。Replace
字元串的替換操作是指将字元串中指定的字元串替換成新字元串。
1.例
在 Main 方法中從控制台輸入一個字元串,然後将字元串中所有的‘,’替換成‘_’。
class Program{ static void Main(string[] args) { string str = Console.ReadLine(); if (str.IndexOf(",") != -1) { str = str.Replace(",", "_"); } Console.WriteLine("替換後的字元串為:" + str); }}
分析:
将輸入的字元串中的所有“逗号”換成“下畫線”。
五、字元串截取函數
在一個字元串中截取一部分字元串也是經常用到的。
例如從身份證号碼中取得岀生年月日、截取手機号碼的前 3 位、截取給定郵箱的使用者名等。
例:
Substring(指定位置);
//從字元串中的指定位置開始截取到字元串結束
Substring(指定位置, 截取的字元的個數);
//從字元串中的指定位置開始截取指定字元個數的字元、
1.例
在 Main 方法中從控制台輸入郵箱,要求郵箱中僅含有一個 @,然後截取郵箱中的使用者名輸出。
class Program{ static void Main(string[] args) { string str = “[email protected]”; int firstIndex = str.IndexOf("@"); int lastIndex = str.LastIndexOf("@"); if(firstIndex != -1 && firstIndex == lastIndex) { str = str.Substring(0, firstIndex); } Console.WriteLine("郵箱中的使用者名是:" + str);//abc }}
分析:
先确定“@”第一次出現的位置數,和最後出現的位置數。
然後進行判斷,是否存在和隻出現一次。
然後截取@前的部分。
str.Substring(0, firstIndex);
從零開始截取,然後到@前的一個。也就得到了abc。
firstIndex應該是3,而截取時,保留前面的,舍棄後面的。
[0,3),前取後舍,即0、1、2、沒有3.
六、字元串插入
在一個字元串中可以在指定位置插入另一個字元串。
使用的方法是 Insert。
在 Insert 方法中需要兩個參數,一個是字元串插入的位置,一個是字元串。
例:
在 Main 方法中從控制台輸入一個字元串,然後将‘@@@’插入到字元串的第 2 個字元的位置。
class Program{ static void Main(string[] args) { string str = Console.ReadLine(); str = str.Insert(1, "@@@"); Console.WriteLine("新字元串為:" + str); }}
分析:
因為這個也是從0開始計算,所有第二個字元,卻是1.