CS3L24——string 
本章代码关键字 
1 2 3 4 5 6 7 8 9 10 11 string []                    string .ToCharArray()        string .Format()                string .IndexOf()            string .LastIndexOf()        string .Remove()                string .replace()            string .ToUpper()            string .ToLower()            string .Substring()            string .Split()                
 
string 
C# 的 string 提供了很多方法方便我们使用
注意,C# 的 string 里边存储的字符组合本身是不可变的,也就说初始化完毕后就不会变化内容了 
这也导致所有看起来修改了字符串的方法,其实都是返回了一个新的字符串
 
字符串指定位置字符获取 
string 本质是 char 数组,因此通过索引可以获取特定位置字符
1 2 3 string  str = "MrTang" ;Console.WriteLine(str[0 ]); 
 
输出:
 
将字符串转换为字符数组 
1 2 3 4 5 6 7 8 9 string  str = "MrTang" ;char [] chars = str.ToCharArray();Console.WriteLine(chars[1 ]); for  (int  i = 0 ; i < str.Length; i++){     Console.WriteLine(str[i]); } 
 
输出:
 
字符串拼接(格式化) 
在字符串内指定位置预留标记,后续的参数就会插入到字符串的标记内,C# 的 字符串内插 本质就是使用了这个方法
1 2 3 string  str = "MrTang" ;str = string .Format("{0}{1}" , 1 , 3333 ); Console.WriteLine(str); 
 
输出:
 
正向查找字符位置 
从 0 开始从左往右开始数,返回下标号,如果存在相同的字符,则只返回第一个相同的字符下标 
如果是字符组合的,则返回需要查找的字符组合第一个字符的下标位置
如果不存在这个字符或字符组合,返回 -1
1 2 3 4 5 6 7 string  str = "我是MrTangMrTang" ;int  index = str.IndexOf("r" );Console.WriteLine(index); index = str.IndexOf("MrTang" ); Console.WriteLine(index); int  index = str.IndexOf("A" );    Console.WriteLine(index); 
 
输出:
 
反向查找指定字符串位置 
从右往左数,返回第一次相同的字符下标,如果是字符组合的,则返回需要查找的字符组合第一个字符的下标位置 
如果字符串内不存在这样的字符,就返回 -1
1 2 3 4 5 string  str = "我是MrTangMrTang" ;index = str.LastIndexOf("MrTang" ); Console.WriteLine(index); index = str.LastIndexOf('A' ); Console.WriteLine(index); 
 
输出:
 
移除指定位置后的字符 
移除传入的下标位置及该下标之后的所有字符
注意!str.remove() 不是直接改变字符串本身,而是返回一个新的字符串,因此需要一个变量来存储返回值,直接使用没有效果
 
1 2 3 4 5 string  str = "我是MrTangMrTang" ;str.Remove(5 ); Console.WriteLine(str); str = str.Remove(5 ); Console.WriteLine(str); 
 
输出:
 
可以传入两个参数
1 2 3 string  str = "我是MrT" str = str.Remove(1 , 1 ); Console.WriteLine(str); 
 
输出:
 
替换指定字符串 
会替换所有与传入参数相同的字符串,替换为第二个参数的字符串
注意!string.replace() 不是直接改变字符串本身,而是返回一个字符串,因此需要一个变量来存储返回值,直接使用没有效果
 
1 2 3 4 5 string  str = "我是MrTangMrTang" ;str.Replace("MrTang" , "player" ); Console.WriteLine(str); str = str.Replace("MrTang" , "player" ); Console.WriteLine(str); 
 
输出:
1 2 我是MrTangMrTang 我是playerplayer 
 
大小写转换 
string.ToUpper() 会将字符串全部转换为大写,string.ToLower() 会将字符串全部转换为小写
注意!string.ToUpper() 和 string.ToLower() 不是直接改变字符串本身,而是返回一个字符串,因此需要一个变量来存储返回值,直接使用没有效果
 
1 2 3 4 5 6 7 8 9 10 11 str = "qwertyuiop" ; str.ToUpper(); Console.WriteLine(str); str = str.ToUpper(); Console.WriteLine(str); str.ToLower(); Console.WriteLine(str); str = str.ToLower(); Console.WriteLine(str); 
 
输出:
1 2 3 4 qwertyuiop QWERTYUIOP QWERTYUIOP qwertyuiop 
 
字符串截取 
截取从指定位置开始之后的字符串,或者传入两个参数,截取某个位置后指定数量的字符
注意 
与其他的方法一样,Substring 不是直接改变字符串本身,而是返回一个字符串,因此需要一个变量来存储返回值,直接使用没有效果 
截取的指定个数不能超过字符串长度,不会自动判断是否越过界限,否则报错
 
1 2 3 4 5 string  str = "MrTangMrTang" ;str = str.Substring(2 ); Console.WriteLine(str); str = str.Substring(2 , 3 ); Console.WriteLine(str); 
 
输出:
 
字符串切割 
split() 方法就是以传入的参数为界,将字符串切割为字符串数组
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 string  str = "1,2,3,4,5,6,7" ;string [] strs = str.Split(',' );for  (int  i = 0 ; i < strs.Length; i++){     Console.WriteLine(strs[i]); } str = "1_1|1_2|3_3|5_1|6_1|7_2|8_3" ; string [] strs2 = str.Split("|" );for  (int  i = 0 ;i < strs2.Length; i++){     string [] temp = strs2[i].Split("_" );     for  (int  j = 0 ; j < temp.Length; j++)     {         Console.Write(temp[j] + "," );     }     Console.Write("\n" ); } 
 
输出:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 1 2 3 4 5 6 7 1 ,1 ,1 ,2 ,3 ,3 ,5 ,1 ,6 ,1 ,7 ,2 ,8 ,3 ,