一、字符串核心本质(必考)
-
string 是引用类型 ,但具备值类型特性。
-
字符串不可变(只读) :所有修改、截取、替换、拼接方法,都不会改变原字符串,只会返回新字符串。
-
字符串可以通过下标 访问单个字符,但是不能通过下标修改字符。
二、字符串五种定义方式(详解)
1. 直接赋值(最常用)
string s = "内容";
string s1 = "特朗普";
2. 换行定义 \r\n
\r\n 代表回车换行,实现代码内换行输出。
string s2 = "锄禾日当午,\r\n汗滴禾下土";
// \r\n 代表换行
3. 转义字符 \\
字符串中想要输出单个 \ 、引号等特殊符号,必须前面加 \ 转义。
例如:想要显示 \ ,必须写 \\
string s3 = "锄禾日当午,\\汗滴禾下土";
4. @原始字符串(重点)
作用:取消所有转义、保留原生格式、保留换行、路径专用。
多用于文件路径、长文本格式。
string s4 = @"C:\Users\Administrator\
Desktop\img";
5. new string(字符,个数)
快速生成多个相同字符,仅支持单个字符重复。
string s5 = new string('c',4); // 输出 cccc
三、14大字符串方法 超详细解析(全覆盖)
1. Concat 拼接字符串
作用:无分隔符拼接多个字符串。
特点:纯拼接、不加分隔符。
string a = "张";
string b = "三";
Console.WriteLine(string.Concat(a, b)); // 张三
2. Join 分隔拼接(重点)
格式:string.Join("分隔符",参数1,参数2...)
作用:用指定符号批量连接多个字符串。
string ss = string.Join("-","a","b","c");
// 结果:a-b-c
3. ToLower() / ToUpper()
ToLower():全部转小写
ToUpper():全部转大写
注意:不改变原字符串,返回新字符串。
string sss = "ABCD";
Console.WriteLine(sss.ToLower()); // abcd
string aa = "abc";
Console.WriteLine(aa.ToUpper()); // ABC
4. CopyTo() 字符串复制到字符数组
参数顺序:(源起始索引, 目标数组, 目标起始索引, 复制个数)
作用:将字符串中指定内容覆盖到char数组中。
aa = "ef";
char[] chars = new char[] {'a','b'};
aa.CopyTo(0, chars, 0, 2 );
// 数组变成 e f
5. StartsWith() 判断开头
判断字符串是否以指定内容开头,返回bool。
string bb = "尉氏县出现自来水污染上央视新闻";
Console.WriteLine(bb.StartsWith("尉")); // true
6. EndsWith() 判断结尾
判断字符串是否以指定内容结尾,返回bool。
Console.WriteLine(bb.EndsWith("问")); // false
7. IndexOf() 查找下标(超级重点)
作用:查找指定字符/字符串在源字符串中第一次出现的下标。
核心规则:找到返回下标(从0开始),找不到固定返回 -1。
拓展:可以设置第二个参数,代表从指定位置开始往后查找。
用途:判断字符串是否包含某个内容:IndexOf(内容) != -1
Console.WriteLine( bb.IndexOf("县")); //2
Console.WriteLine(bb.IndexOf("县1")); //-1 不存在
Console.WriteLine(bb.IndexOf('县', 10)); //从下标10开始往后找
8. IndexOfAny()
传入字符数组,查找数组中任意字符第一次出现的下标。
Console.WriteLine(bb.IndexOfAny(new char[] {'尉','县'})); //0
9. Equals() 比较是否相等
字符串对比:Equals 和 == 效果完全一致。
对象对比:new 出来的对象地址不同,Equals 返回 false。
string cc = "10";
string dd = "10";
Console.WriteLine(cc==dd);//true
Console.WriteLine(cc.Equals(dd));//true
//对象对比
object a2 = new object();
object b2 = new object();
Console.WriteLine(a2.Equals(b2));//false
10. Substring() 截取字符串(必考)
重载1:Substring(起始下标) ------ 从起始位置截取到末尾
重载2:Substring(起始下标, 截取长度) ------ 第二个参数是长度,不是结束下标
string ee = "abcccdd";
Console.WriteLine(ee.Substring(2,3)); //从2开始截3个字符 ccc
11. Replace() 替换
作用:将字符串中所有匹配的旧内容替换为新内容。
Console.WriteLine(ee.Replace('c', '*')); //ab***dd
12. Split() 分割(大题高频)
作用:根据指定符号分割字符串,返回字符串数组。
规律:分割后,原分割符号消失,剩余内容存入数组。
ee= "a-b-c-d";
string[] arr = ee.Split('-');
//数组:a b c d
13. Trim() 去空格
Trim():去除首尾全部空格
TrimStart():只去头部空格
TrimEnd():只去尾部空格
string eee = " 张 三 ";
Console.WriteLine(eee.Trim()); //张 三
Console.WriteLine(eee.TrimEnd()); // 张 三
14.Contains() 判断是否包含指定内容
功能
判断源字符串中是否包含指定字符/字符串,返回 bool 类型(true/false)。
代码示例
string s = "杀杀杀";
Console.WriteLine(s.Contains("杀1")); // false 不包含
Console.WriteLine(s.Contains("杀")); // true 包含
必背规则
-
包含返回 true ,不包含返回 false
-
区分大小写
-
相比 IndexOf 判断更简洁,专门用于包含判断
15.Insert() 字符串插入
功能
在字符串指定下标位置,插入新的字符串,返回拼接后的新字符串。
代码示例
string s = "杀杀杀";
string ss = s.Insert(0, "都是");
Console.WriteLine(ss); // 输出:都是杀杀杀
必背规则
-
参数1:插入的起始下标
-
参数2:需要插入的内容
-
原字符串不变,必须接收返回值才生效
16、LastIndexOf() 从后往前查找下标
功能
从字符串末尾向前查找 ,返回目标内容 最后一次出现的下标。
对比 IndexOf(必考区别)
-
IndexOf():从前往后 ,找第一次出现的下标
-
LastIndexOf():从后往前 ,找最后一次出现的下标
-
找不到统一返回 -1
代码示例
string s = "杀杀杀";
Console.WriteLine(s.IndexOf("杀")); // 0 第一次出现
Console.WriteLine(s.LastIndexOf("杀")); // 2 最后一次出现
17.Remove() 移除字符串内容
功能
从指定下标开始,删除指定个数的字符,返回删除后的新字符串。
重载语法
-
Remove(startIndex):从起始下标删除到末尾
-
Remove(startIndex, 长度):从起始下标删除指定长度字符
代码示例
string s = "杀杀杀";
Console.WriteLine(s.Remove(0, 1)); // 从0下标删除1个字符,输出:杀杀
四、必考易错点(扣分点汇总)
-
字符串不可变:所有方法不会修改原字符串,必须接收返回值才生效。
-
IndexOf 找不到一定返回 -1(考试判断逻辑必考)。
-
Substring 第二个参数是截取长度,不是结束索引。
-
@字符串禁止转义,路径、多行文本必须用@。
-
Split分割结果永远是数组。
-
字符串可以读下标,不能修改下标字符。
-
转义符:\\代表单个反斜杠,\r\n代表换行。
-
第二个参数是 删除的字符个数(长度),不是结束下标
-
原字符串不改变,必须接收返回值
五、终极速记口诀
-
拼接Concat、分隔Join;
-
大小写变ToLower、ToUpper;
-
首尾判断Start、End;
-
查找下标IndexOf、任意字符IndexOfAny;
-
相等对比Equals;
-
截取Substring、替换Replace;
-
分割Split、去空Trim。
-
Contains:判断是否包含,返回布尔值
-
Insert:指定下标插入字符串
-
IndexOf正找首个下标,LastIndexOf倒找末尾下标
-
Remove:指定位置删除指定长度字符
-
所有字符串方法:不修改原字符串,只返回新值