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 ,