一、字符串
在C#中,字符串是一种表示文本数据的数据类型,使用字符串类型可以存储和操作字符序列。在C#中,字符串类型使用关键字"string"来声明
二、常见方法
ToLower、Toupper:大小写字母转换
str=str.ToLower():得到字符串的小写形式
str=str.Toupper():得到字符串的大写形式
sq.Equals(s2,StringComparison.OrdinallgnoreCase):两个字符串进行比较不区分大小写的比较str.Split:切割字符串
替换字符串(Replace)
判断这个字符串中是否包含这个字符串(Contains)
Substring:截取字符串(注:截取长度不能超过字符串)
Substring:找到某个字符串索引再截取
StartsWith、EndsWith:判断是否以某个字符串开始、结尾
IndexOf:找到字符串的索引
LastIndexOf:找到最后一个索引位置
Insert:在某个索引处插入一个字符串
forr:字符串输出倒放
forr:字符串反序输出
str.Split:分别提取字符串
string.Join切割字符串,添加间隔符
IsNullOrEmpty是否有空字符
Remove(3):从第三个位置开始移除(只保留前三个)
Remove(3,2):从第三个位置开始
Trim():删除空格部分
三、实战演练
1、字符串的声明和初始化
string str1 = "Hello World"; // 直接赋值初始化
string str2 = new string('a', 5); // 使用构造函数初始化,生成包含5个字符'a'的字符串
2、for:字符串变字符数组(循环输出)
字符串变字符数组(循环输出)
string str = "今天是个好天气";
char[] chr = new char[str.Length];
for (int i = 0; i < str.Length ; i++)
{
chr[i] = str[i];
}
for (int i = 0; i < chr.Length; i++)
{
Console.WriteLine(chr[i]);
}
Console.ReadKey();
3、ToCharArray:字符串数组变字符串(字符串数组变新的字符串数组)
string str = "今天是个好天气";
char[] chr=str.ToCharArray(); //变成字符数组
chr[3] = '真'; //赋值
string str1 = new string(chr); //变成新的字符串
Console.WriteLine(str1);
Console.ReadKey();
//输出结果:今天是真好天气
4、随机输入你心中想到的一个名字,然后输出它的字符串长度 lenght:可以得字符串的长度
Console.WriteLine("随机输入你心中想到的一个名字");
string str = console.readline();
Console.WriteLine(str.Length );
5、两个学员输入各自最喜欢的课程名称,判断是否一致,如果相等,则输出你们俩喜欢相同的课程。
如果不相同,则输出你们俩喜欢不相同的课程
Console.WriteLine("输入第一门喜欢的课程名称"); //输入第一门课程
string lesson1 = Console.ReadLine(); //在控制台接收用户输入内容
Console.WriteLine("输入第二门喜欢的课程名称"); //输入第二门课程
string lesson2 = Console.ReadLine(); //在控制台接收用户输入内容
if (lesson1 == lesson2) //如果第一门课程=第二门课程
{
Console.WriteLine("课程一样" + lesson1); //两门课程相同,输出
}
else
{
Console.WriteLine("课程不同,分别是:{0},{1}", lesson1, lesson2); //两门课程不同,输出
6.Contains()
:判断字符串是否包含指定的子串
string str = "Hello World";
bool contains = str.Contains("World"); // 返回 true
7.Trim()
和TrimStart()
、TrimEnd()
:删除字符串前后的空格或指定的字符
string str = " Hello ";
string trimmed = str.Trim(); // 返回 "Hello"
string trimmedStart = str.TrimStart(); // 返回 "Hello "
string trimmedEnd = str.TrimEnd(); // 返回 " Hello"
8.Split()
:将字符串分割成字符串数组
string str = "Hello,World";
string[] parts = str.Split(','); // 返回 ["Hello", "World"]
9. Length:输出字符串长度
string str = "今天是个好天气";
Console.WriteLine(str.Length); //在控制台显示
10.字符串的连接:
string str3 = "Hello";
string str4 = "World";
string result = str3 + " " + str4; // 字符串连接使用"+"运算符
11.字符串的比较:
string str1 = "Hello";
string str2 = "World";
bool isEqual = str1.Equals(str2); // 比较字符串是否相等
int compareResult = string.Compare(str1, str2); // 比较字符串的大小关系
12.字符串的格式化:
string name = "Alice";
int age = 25;
string formattedStr = string.Format("My name is {0} and I am {1} years old.", name, age); // 字符串格式化
13.字符串的拆分和连接:
string str = "apple,banana,orange";
string[] fruits = str.Split(','); // 拆分字符串为字符串数组
string joinedStr = string.Join("-", fruits); // 将字符串数组连接为一个字符串,使用"-"作为分隔符
四、string str = null 与string str = ""的区别
string str = null
:
将字符串变量str
初始化为null
,表示该变量当前不引用任何字符串对象。这意味着str
是一个空引用,它不指向任何有效的字符串对象。如果尝试在str
上调用字符串方法或属性,将会引发NullReferenceException
异常。
string str = ""
:
将字符串变量str
初始化为空字符串,表示该变量引用一个长度为0的空字符串对象。这意味着str
引用一个有效的字符串对象,但该对象的值为空字符串。可以在str
上调用字符串方法或属性,因为它引用了一个有效的字符串对象。
五、字符串的创建和销毁
每当我们创建一个字符串时,都会在内存中分配一段连续的内存空间来存储该字符串的字符序列。
内存的创建:
当我们使用字符串字面量或者调用new string()
构造函数来创建字符串时,会在堆上分配一块内存空间来存储字符串的字符序列。
内存的销毁:
在C#中,由于字符串是不可变的,所以我们无法直接销毁一个字符串对象。当一个字符串对象不再被引用时,垃圾回收器会自动检测到这个对象,并在适当的时机回收该对象所占用的内存空间。
垃圾回收器会周期性地进行垃圾回收操作,它会标记并清理不再被引用的对象,并将它们所占用的内存空间释放回系统。具体的回收策略和时机是由垃圾回收器自动决定的,我们无需手动管理内存的释放。
需要注意的是,如果我们使用了大量的字符串对象,特别是在循环中创建大量的字符串对象,可能会导致内存占用过高,影响性能。为了避免这种情况,可以使用StringBuilder
类来高效地构建和操作字符串。StringBuilder
类允许我们在一个可变的缓冲区中进行字符串操作,避免频繁地创建新的字符串对象。