C#基础——字符串(string str = null 与string str = ““的区别)

一、字符串

在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类允许我们在一个可变的缓冲区中进行字符串操作,避免频繁地创建新的字符串对象

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 27
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 27
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小乔努力变强

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值