字符串
掌握 string 类型的核心特性
熟练使用字符串常用方法
理解字符串的不可变性
核心讲解
string 是 C# 最常用的引用类型,专门用来表示文本。
(1)核心特性:不可变性
字符串对象一旦创建,内容就不能修改。所谓的 “修改” 其实是创建了全新的字符串对象,原字符串不变。
优点:安全、可共享、常量池优化
缺点:频繁修改会产生大量临时对象,性能低
(2)创建方式
string s1 = "hello"; // 最常用
string s2 = new string('a', 5); // "aaaaa"
string s3 = string.Empty; // 空字符串
(3)常用属性与方法
表格
成员 | 功能 |
|---|---|
| 获取字符串长度 |
| 获取指定位置的字符 |
| 截取子串 |
| 替换内容 |
| 分割成字符串数组 |
| 是否包含指定内容 |
| 以指定内容开头 / 结尾 |
| 转大小写 |
| 去除首尾空白 |
| 判断是否 null 或空 |
| 判断是否 null / 空 / 全空白 |
操作步骤
编写字符串创建与方法调用代码
运行验证每个方法的输出
验证字符串不可变性
代码示例
string str = "Hello C# 编程";
// 基础属性
Console.WriteLine("长度:" + str.Length);
Console.WriteLine("第2个字符:" + str[1]); // e
// 常用方法
Console.WriteLine("是否包含C#:" + str.Contains("C#"));
Console.WriteLine("截取0-5位:" + str.Substring(0, 5)); // Hello
Console.WriteLine("替换:" + str.Replace("编程", "开发"));
// 分割
string fruitStr = "苹果,香蕉,橙子,葡萄";
string[] fruits = fruitStr.Split(',');
Console.WriteLine("分割后第一个:" + fruits[0]);
// 判空
string emptyStr = " ";
Console.WriteLine("IsNullOrEmpty:" + string.IsNullOrEmpty(emptyStr)); // false
Console.WriteLine("IsNullOrWhiteSpace:" + string.IsNullOrWhiteSpace(emptyStr)); // true
// 不可变性验证
string s = "abc";
s.Replace('a', 'A'); // 返回新字符串,s本身不变
Console.WriteLine("原字符串:" + s); // 还是abc
s = s.Replace('a', 'A'); // 重新赋值才会变
Console.WriteLine("重新赋值后:" + s);
Console.ReadKey();
常见误区
用 == 比较字符串不对:C# 中
==对 string 是比较内容,是安全的;但更推荐用.Equals()并指定比较规则索引越界:索引超过长度 - 1 会抛
IndexOutOfRangeException以为修改了原字符串:所有修改方法都返回新字符串,原字符串不变,必须重新赋值
判空只判断 "":要考虑 null 和全空格场景,优先用
string.IsNullOrWhiteSpace()
课后练习
定义字符串
" Hello World ",完成:去首尾空格、转大写、截取 "World"用 Split 拆分
"192.168.1.1"IP 地址,输出每一段写一个方法,判断字符串是否是纯数字
思考:为什么 string 要设计成不可变的?

