字符串

1、字符串的不可变性

当对字符串重新赋值时,在开辟一个新空间后原空间没有消除,只有当程序结束后原空间才会消除
在这里插入图片描述

2、StringBuilder

由于字符串的不可变性,所以,当我们需要给一个字符串进行大量的拼接、赋值等操作的时候,
会产生大量的内存垃圾,所以说,这么做是不合算的。
如果你需要对一个字符串进行大量的重复,拼接等操作,我们推荐使用StringBuilder

3、对字符串的修改

string可以看做是char的只读数组,C#中字符串有一个重要的特性:不可变性,字符串一旦声明就不再可以改变。所以只能通过索引来读取指定位置的char,不能对指定位置的char进行修改。
如果要对char进行修改,那么就必须创建一个新的字符串,用s. ToCharArray()方法得到字符串的char数组,对数组进行修改后,调用new string(char[])这个构造函数(暂时不用细研究)来创建char数组的字符串。一旦字符串被创建,那么char数组的修改也不会造成字符串的变化。例子:将字符串中的A替换为a
string str=“asdfg”;
//将字符串转换成char类型的数组
char[] chs=str.ToCharArray();
chs[0]=‘b’;
//再将char数组转换成字符串
str=new string(chs);

4、字符串的各种方法

ToCharArray():将字符串转换成char类型的数组
new string(char[] chs):将一个字符数组转换成一个字符串
ToUpper():表示将一个字符串转换成大写形式。
ToLower():表示将一个字符串转换成小写形式。
Equals(“要比较的字符串”,StringComparison.OrdinalIgnoreCase):比较字符串,忽略大小写
Split(new char[]{‘要分割的字符串’},StringSplitOption.RemoveEmptyEntries):分割字符串,返回一个字符串类型的数组
Substring():截取字符串
Contains(“要判断的字符串”) 其值为布尔类型 判断是否包含某个字符子串
StartsWith(“要判断的字符串”) 其值为布尔类型 判断是否以某个字符子串开头
EndsWith(“要判断的字符串”) 其值为布尔类型 判断是否以某个字符子串结尾
int IndexOf(string value):取子串value第一次出现的位置
int LastIndexOf最后一次出现的位置

5、练习题

练习一:随机输入你心中想到的一个名字,然后输出它的字符串长度 Length:可以得字符串的长度

Console.WriteLine("随机输入你心中想到的一个名字");
string name=Console.Readline();
Console.WriteLine("你心中想到的一个名字的长度为{0}",name.Length);
Console.Readkey();

练习二:两个学员输入各自最喜欢的课程名称,判断是否一致,如果相等,则输出你们俩喜欢相同的课程.如果不相同,则输出你们俩喜欢不相同的课程.

Console.writeLine("请输入你喜欢的课程");
sting lessonOne=Console.Readline();
//方法一:将一个字符串转换成大写
//lessonOne=lesson.ToUpper();
//方法二:将一个字符串装换成小写
//lessonOne=lesson.ToLower();
Console.writeLine("请输入你喜欢的课程");
sting lessonTwo=Console.Readline();
//lessonTwo=lesson.ToUpper();
//lessonTwo=lesson.ToLower();
if(lessonOne==lessonTwo)//方法三:比较字符串,忽略大小写if(lessonONe.Equals(lessonTwo,StringComparison.OrdinalIgnoreCase))
{
      Consloe.WriteLine("你们俩喜欢相同的课程");
}
else
{
      Consloe.WriteLine("你们俩不喜欢相同的课程");
}

练习三:分割字符串从"1988 --,-, -, 10–,--05"中分割得到"19881005"

string str="1988  --,-,  -,  10--,--05";
//第一种方法
//char[] chs={' ','-',','};
//string[] strNew=str.Split(chs,StrignSplitOptions.RemoveEmptyEntries);
//第二种方法
string[] strNew=str.Split(new char[]{' ','-',','},StrignSplitOptions.RemoveEmptyEntries);
Console.ReadKey();

练习题四
1、从日期字符串(“2008-08-08”)中分析出年、月、日;2008年08月08日。

string date="2008-08-08";
string[] newDate=date.Split(new char[] {'-'},StrignSplitOptions.RemoveEmptyEntries);
date=newDate[0]+"年"+newDate[0]+"月"+newDate[0]+"日";
Console.Writeline(date);
Console.ReadKey();

2、让用户输入一个日期格式如:2008-01-02,你输出你输入的日期为2008年1月2日
练习题五:替换字符
输入丁浩然将浩字替换成"*"

string str="丁浩然";
str=str.Replace("浩","*");
Consle.WriteLine(str);
Console.ReadKey();

练习题六:截取字符串
从"今天天气好晴朗,处处好风光"截取"天气好晴朗"

string str="今天天气好晴朗,处处好风光";
str=str.Substring(1,6);
Console.WriteLine(str);
Console.ReadKey();

从"今天天气好晴朗,处处好风光"截取从"气"以后的字符

string str="今天天气好晴朗,处处好风光";
str=str.Substring(3);
Console.WriteLine(str);
Console.ReadKey();

练习题七判断"今天天气好晴朗,处处好风光"是否包含"天"

string s="今天天气好晴朗,处处好风光";
if(s.Contains("天"))//需要注意的是若判断"天好",就不包含因为它不是一个完整的字符串
{
  Console.writeLine("包含");
}
else
{
  Console.WriteLine("不包含");
}
Console.Readkey();

练习题八判断"今天天气好晴朗,处处好风光"是否以"今天"开头

string s="今天天气好晴朗,处处好风光";
if(s.StartsWith("今天")//if(s.EndsWith("风光"))判断是否以"风光"结尾
{
  Console.writeLine("是");
}
else
{
  Console.WriteLine("不是");
}
Console.Readkey();

练习题九查找"今天天气好晴朗,处处好风光"中第一个天的位置

string s="今天天气好晴朗,处处好风光";
int index=s.IndexOf('天');//当无法查找到时,index=-1
Console.WriteLine(index);
Console.ReadKey();

练习题十查找"lD:\Adobe Dreamweaver CS6\payloads\AdobeCSXSExtensions3-mul\丁浩然.mp3"中的"丁浩然.mp3"

string path=@"lD:\Adobe Dreamweaver CS6\payloads\AdobeCSXSExtensions3-mul\丁浩然.mp3";
int index=path.LastIndexOf('\\');
string s=path.Substring(index+1);
Console.WriteLine(s);
Console.ReadKey();

练习题十一去掉" abc "中的空格

string str="    abc        ";
str=str.Trim();//去掉空格
Console.Write(str);
Console.ReadKey();

练习题十二将"abc"反转为"cba"

            char[] chs = str.ToCharArray();
            for(int i= 0;i<=chs.Length/2;i++)
            {
                char n = ' ';
                n = chs[i];
                chs[i] = chs[chs.Length - 1 - i];
                chs[chs.Length - 1 - i] = n;
            }
            str = new string(chs);
            Console.Write(str);
            Console.ReadKey();

简单方法

            string str = "abc";
            for(int i=str.Length-1;i>=0;i--)
            {
                Console.Write(str[i]);
            }
            Console.ReadKey();

练习题十三将单词反向输出"hello c sharp" -> “sharp c hello”(注意输出时不用考虑空格的问题)

            string str = "hello  c sharp";
            string[] strNew=str.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
            for(int i=strNew.Length-1;i>=0;i--)
            {
                Console.Write(strNew[i]);
            }
            Console.ReadKey();

练习题十四从Email中提取出用户名和域名:abc@163.com

            string str = "abc@163.com";
            int index = str.IndexOf('@');
            string strName1 = str.Substring(0,index);
            string strName2 = str.Substring(index + 1);
            Console.WriteLine("用户名为{0},域名为{1}", strName1, strName2);
            Console.ReadKey();

练习题十五
文本文件中存储了多个文章标题、作者,标题和作者之间用若干空格(数量不定)隔开,每行一个,标题有的长有的短,输出到控制台的时候最多标题长度10,如果超过10,则截取长度8的子串并且最后添加“…”,加一个竖线后输出作者的名字。
让用户输入一句话,找出所有e的位置
让用户输入一句话,判断这句话中有没有邪恶,如果有邪恶就替换成这种形式然后输出,如:老牛很邪恶,输出后变成老牛很**;
把{“诸葛亮”,”鸟叔”,”卡卡西”,”卡哇伊”}变成诸葛亮|鸟叔|卡卡西|卡哇伊,然后再把|切割掉

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值