![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLicmbw5yNmNmYxETMykTZ3kjZlljNiVGMwUDM5UGZjNGMzUmZx8CX0JXZ252bj91Ztl2Lc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
一、字符串
一种数据类型,其实就是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.