C#String字符串

一、字符串核心本质(必考)

  1. string 是引用类型 ,但具备值类型特性

  2. 字符串不可变(只读) :所有修改、截取、替换、拼接方法,都不会改变原字符串,只会返回新字符串。

  3. 字符串可以通过下标 访问单个字符,但是不能通过下标修改字符

二、字符串五种定义方式(详解)

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:指定位置删除指定长度字符

  • 所有字符串方法:不修改原字符串,只返回新值

相关推荐
猫头虎-前端技术1 小时前
JS 作用域与闭包:从变量提升到闭包陷阱的超详细解析
开发语言·javascript·云计算·bootstrap·ecmascript·openstack·perl
枫叶林FYL2 小时前
项目十:事件溯源仓储管理系统(WMS)仿真实现
开发语言·python
繁华落尽,倾城殇?2 小时前
[C++11] : atomic,nullptr,default/delete,enum class
开发语言·c++·c++11·nullptr·atomic·enum class·default/delete
01_ice2 小时前
C语言数据在内存中的存储
c语言·开发语言
代码村新手2 小时前
C++-二叉搜索树
开发语言·c++
吃好睡好便好4 小时前
创建魔方矩阵和单位矩阵
开发语言·人工智能·学习·线性代数·matlab·矩阵
影寂ldy4 小时前
C#数组的属性和方法(Clear / Copy / IndexOf )
开发语言·javascript·c#
i7i8i9com4 小时前
Hermes Agent 安装记录
开发语言·bash·hermes
小娄~~5 小时前
C语言卷子错题集
c语言·开发语言·数据结构