版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第5章字符和字符串本章导读:本章的主要内容是学习字符和字符串的用法。然后通过项目“有趣的古诗”为导向,七个任务(按行输出古诗《清明》、古诗听写、提取古诗关键字、古诗分割成句、古诗的有趣断句、错乱古诗的拼接、变化多样的字符串)为驱动,学习有关字符和字符串的相关知识,包括字符和字符串的声明及使用、字符串的常见操作方法等,本项目的完成使得学生能在趣味中学习字符和字符串。第5章字符和字符串
——任务一按行输出古诗《清明》
一、任务描述:创建一个控制台应用程序,按行打印出古诗《清明》:清明时节雨纷纷,路上行人欲断魂。借问酒家何处有?牧童遥指杏花村。每行诗中的每个字用制表符隔开,效果如下图所示:二、知识准备:Char类1二、知识准备:1、Char类Char在C#中表示一个Unicode字符,多个Unicode字符构成字符串。Unicode字符是目前计算机中通用的字符编码,对不同语言中的每个字符设定了统一的二进制编码,用于满足跨语言、跨平台的文本转换、处理的要求。char类的定义如下:charch1=’A’;charch2=’2’;字符常量用单引号括起二、知识准备:Char类为开发人员提供了多种方法来操控字符。常用方法及说明如表所示,还有一些方法没有全部列举,需要时请查阅相关资料。Char类的常用方法及说明方法说明IsDigit字符是否属于十进制数字类别IsLetter字符是否属于字母类别IsLetterOrDigit字符是否属于字母类别或者数字类别IsLower字符是否属于小写字母类别IsNumber字符是否属于数字类别IsPunctuation字符是否属于标点符号类别IsUpper字符是否属于大写字母类别IsSeparator字符是否属于分隔符类别三、任务分析:1、分析按行输出古诗需要的变量如表所示:变量声明说明表序号变量名称变量类型变量作用1poemstring用于存放古诗2itemcharforeach中的循环变量2、可以使用foreach语句对诗词的每一个字进行循环访问。3、分行显示可以通过IsPunctuation方法判断当前字符为标点符号类型时输出换行符实现。4、制表符使用转义字符“\t”表示。四、任务实施:1、创建一个名为Poem的控制台应用程序。2、在main函数中定义变量Poem用于存放古诗:stringpoem="清明时节雨纷纷,路上行人欲断魂。借问酒家何处有?牧童遥指杏花村。";3、添加代码对古诗按行输出,每个字中间用制表符“\t“分隔:三、任务实施:foreach(chariteminpoem){Console.Write(item);Console.Write("\t");if(Char.IsPunctuation(item))Console.Write("\n");}4、运行程序。1、foreach语句通常用于对字符的逐个访问,一个中文字也是一个字符。2、Char类的常见方法返回值为true或者false。四、任务小结:第5章字符和字符串
——任务二古诗听写
一、任务描述:在任务一中我们学习了一首中国古诗《清明》,在本任务中,希望同学们能够默写该古诗。创建一个控制台应用程序,逐行输入古诗,如果正确,则提示通过;若错误,则显示正确古诗。运行效果如下图所示:1二、知识准备:比较字符串二、知识准备:1、比较字符串在C#中比较字符串通常有Compare、CompareTo和Equals这三种方法,这三种方法都属于String类。二、知识准备:1、比较字符串(1)
Compare方法Compare方法用于比较两个字符串是否相等,有很多种重载方法,下面列出最常用的两种:intCompare(stirngA,stringB)intCompare(stirngA,stringB,boolignorCase)二、知识准备:参数说明参照表所示:Compare方法参数及说明编号参数说明1stirngA,要比较的字符串A2stringB要比较的字符串B3boolignorCase如果为true,表明比较时忽略大小写。Compare方法会返回一个整型值,为0表示两个字符串相等,为1表示A比B大,为-1表示A比B小。二、知识准备:(2)
CompareTo方法CompareTo方法与Compare方法含义类似,不同的是CompareTo方法是以实例本身与指定字符串做比较。语法:publicintCompareTo(stringB);二、知识准备:(3)
Equals方法Equals方法用于比较两个字符串是否相同,如果相同返回true,不同返回false,有以下两种常用方法。假设有两个待比较字符串stringa,b;<1>实例方法。语法:publicboolEquals(stringvalue)用实例方法比较字符串a和b:a.Equals(b);二、知识准备:<2>静态方法。语法:publicstaticboolEquals(stringA,stringB)用静态方法比较字符串a和b:Equals(a,b);三、任务分析:1、分析古诗听写任务需要以下变量,如表所示:变量声明说明表序号变量名称变量作用1sentence用于存放输入的古诗语句2poem用于存放全部古诗语句3i循环变量2、因为对古诗的听写是按行判断,所有需要将整个古诗存放在一个字符串数组里,以方便按行比较。string[]poem;数组的定义将在第5章中详细讲解,此处只需要同学们理解即可。四、任务实施:1.创建1个名为“PoemEqual”的控制台应用程序。2.变量定义:Stringsentence="";//利用字符串数组存放古诗string[]poem=newstring[]{"清明时节雨纷纷","路上行人欲断魂","借问酒家何处有","牧童遥指杏花村"};四、任务实施:3.添加如下代码完成诗词按行默写:for(inti=0;i<poem.Length;i++){Console.WriteLine("请默写第{0}句古诗:\n",i+1);sentence=Console.ReadLine();if(sentence.Equals(poem[i]))Console.WriteLine("第{0}句默写正确!\n",i+1);elseConsole.WriteLine("第{0}句默写错误!正确诗句为:{1}。\n",i+1,poem[i]);}五、任务小结:1、任务中的if(sentence.Equals(poem[i]))可以修改if(string.Compare(sentence,poem[i])==0)。第5章字符和字符串
——任务三提取古诗关键字
一、任务描述:创建一个控制台应用程序,提取古诗指定关键字。输入所要提取关键字所在第几句,起始位置和关键字长度,运行程序,显示出指定关键字。程序运行效果图如下图所示:二、任务准备:1、截取字符串String类提供了一个Substring方法可以截取字符串中指定位置开始指定长度的子字符串。语法格式为:stringSubstring(intstart,intlength)从一个字符串中start位置开始取长度为length的一个子串,如果省略length,表示子串从字符串中start位置开始直到最后一个字符。二、任务准备:例:分别从字符串“HelloWorld!”中取子串“Hello”和“World!”。stringstrHello="HelloWorld!";stringstrH=strHello.Substring(0,5);//从字符串变量strHello的第1个字符开始取5个字符stringstrW=strHello.Substring(6);//从变量strHello中取出从第7个字符开始的所有字符二、任务准备:例1:判断一个整数是否为水仙花数。(利用SubString方法)staticvoidMain(string[]args){Console.Write("请输入要判断的一个整数:");stringstrdata=Console.ReadLine();intsum=0;for(inti=0;i<strdata.Length;i++){intid=Convert.ToInt32(strdata.Substring(i,1));sum+=id^3;}二、任务准备:
if(sum==Convert.ToInt32(strdata)){Console.WriteLine("{0}是水仙花数",strdata);}else{Console.WriteLine("{0}不是水仙花数。",strdata);}Console.Write("按任意键退出......");Console.ReadKey(true);}二、任务准备:2、字符串的转义字符@在接受字符串的时候介绍了转义字符“\”。例如:需要字符串用来表示test.txt文件的路径时,可以做如下定义:stringpath=”D:\\temp1\\temp2\\test.txt”;但是,如果需要定义有很多转义字符的字符串时,这样做会显得非常麻烦,而且容易出错。实际上,.NET提供了一个很好用的运算符“@”来简化字符串的转义字符。二、任务准备:以@开头用双引号引起来的这种定义方式优点在于换码序列“不”被处理。如果需要用@引起来的字符串中包含一个双引号,可以使用两对双引号的方法,如下所示:stringpath=@”D:\temp1\temp2\test.txt”;上面的文件路径可以做如下定义,与上面的定义等价:此时,字符串str的值为“Hello”World!。stringstr=@”””Hello””World!”;三、任务分析:1、本任务需要以下变量,如表所示变量声明说明表2、在程序设计中,位置的编号都是从0开始,例如line=3,用户意指第3行,实则在字符串数组poem是编号为2的行(3-1)。序号变量名称变量类型变量作用1poemstring存放诗句的字符串数组2lineint关键字所在行3startint关键字开始位置4lengthint关键字长度5sentencestringforeach的循环变量四、任务实施:1.建立一个名为“PoemSunstring”的控制台应用程序。2.定义变量如下:intline=0;intstart=0;intlength=0;string[]poem=newstring[]{"清明时节雨纷纷","路上行人欲断魂","借问酒家何处有","牧童遥指杏花村"};四、任务实施:3.输出古诗词。利用foreach语句输出字符数组Poem里面的古诗词:foreach(stringsentenceinpoem){Console.WriteLine(sentence);}四、任务实施:4.输入关键字所在行号、起始位置和长度。Console.Write("请输入需要提取的词语所在句子:");line=int.Parse(Console.ReadLine())-1;Console.Write("请输入需要提取的词语起始位置:");start=int.Parse(Console.ReadLine())-1;Console.Write("请输入需要提取的词语的长度:");length=int.Parse(Console.ReadLine());四、任务实施:5.提取关键字,并输出。关键字的提取,实际上是对指定的诗句进行字符串的截取。Console.WriteLine("提取的关键字为:"+poem[line].Substring(start,length));6.运行程序。五、任务小结:1、截取子字符串的方法Substring语法格式为:stringSubstring(intstart,intlength)
从一个字符串中start位置开始取长度为length的一个子串,如果省略length,表示子串从字符串中start位置开始直到最后一个字符。在应用此方法时,要注意start和length的值的计算。2、学会灵巧应用LastIndexOf方法计算length的值。第5章字符和字符串
——任务四古诗分割成句
一、任务描述:将古诗《清明》从标点符号处分隔成诗句。程序运行效果如下图所示:二、任务准备:1、分割字符串String类提供了一个Split方法,可以将字符串按照指定的分隔符分割。语法:publicstring[]Split(paramschar[]separator)separator是一个数组,包含分隔符。三、任务分析:1、分析统计古诗分隔需要以下变量,如表所示:变量声明说明表序号变量名称变量类型变量作用1poemstring保存完整古诗2inputsstring数组保存分隔成句古诗的字符串数组四、任务实施:1.建立1个名为“PoemSplit”的控制台应用程序。2.定义变量如下:stringpoem="清明时节雨纷纷,路上行人欲断魂。借问酒家何处有?牧童遥指杏花村。";//利用Split方法按照指定符号分隔诗词string[]inputs=poem.Split(',','。','?','。');四、任务实施:3.诗词的整句输出:Console.WriteLine("《清明》杜牧");Console.WriteLine("整首输出:"+poem);四、任务实施:4.利用foreach语句对诗词进行分割成句:Console.WriteLine("《清明》杜牧");Console.WriteLine("整首输出:"+poem);Console.WriteLine("分割成句:");foreach(stringitemininputs){Console.Write(item);}五、任务小结:1、代码可以替换为string[]inputs=poem.Split(newchar[]{',','。','?','。'},StringSplitOptions.RemoveEmptyEntries);,第二个参数表示移除分隔后最后的空白字符串。第5章字符和字符串
——任务五古诗的有趣断句
一、任务描述:有一首诗:“清明时节雨纷纷,路上行人欲断魂。借问酒家何处有?牧童遥指杏花村”。向其中插入标点符号,变成另外一句意境:“清明时节雨,纷纷路上行人,欲断魂。借问酒家,何处有牧童,遥指杏花村。”。创建一个C#控制台应用程序,实现古诗的重新断句,效果如下图所示:二、任务准备:1、插入和填充字符串(1)插入字符串String类提供了一个Insert方法,用于向字符串的任意指定位置插入字符串。语法:publicstringInsert(intstartIndex,stringvalue);Insert方法参数及说明编号参数说明1intstartIndex要插入字符串的索引位置2stringvalue要插入的字符串二、任务准备:(2)填充字符串
String类提供了PadLeft和PadRight方法,用于向字符串的左侧或右侧进行字符填充。语法:publicstringPadLeft(inttotalsWidth,charpaddingChar);publicstringPadRight(inttotalsWidth,charpaddingChar);PadLeft和PadRight方法参数及说明编号参数说明1inttotalsWidth填充后的字符长度2charpaddingChar填充字符1、插入和填充字符串二、任务准备:2、删除字符串publicstringRemove(intstartIndex);String类提供了一个Remove方法,用于从字符串的指定位置开始,删除指定个数的字符。它有两种重载方法。(1)删除字符串中指定位置开始到最后的所有字符。语法如下:二、任务准备:(2)删除从字符串指定位置开始指定个数的字符。语法如下:publicstringRemove(intstartIndex,intcount);Remove方法参数及说明编号参数说明1intstartIndex删除字符串开始的位置2intcount删除的字符个数三、任务分析:1、分析对古诗进行插入和删除字符需要以下变量,如表所示:变量声明说明表序号变量名称变量类型变量作用1strstring保存原有古诗四、任务实施:1.启动VisualStudio2010,建立名为“InterestPoem”的控制台应用程序。2.打开“Program.cs”代码文件,输入以下代码:staticvoidMain(string[]args){stringstr="清明时节雨纷纷路上行人欲断魂借问酒家何处有牧童遥指杏花村";Console.WriteLine("原字符串为:{0}",str);
str=str.Insert(5,",");str=str.Insert(13,",");str=str.Insert(17,"。");str=str.Insert(23,",");str=str.Insert(30,"?");str=str.Insert(36,"。");Console.WriteLine("添加标点符号后:{0}",str);Console.ReadLine();}四、任务实施:运行结果如图所示:四、任务实施:3.如图5-6所示可以看到添加字符后的诗句里有很多多余的空格,通过Remove来删除这些字符,变成一首工整的诗句,运行结果如上图所示,修改代码如下:staticvoidMain(string[]args){stringstr="清明时节雨纷纷路上行人欲断魂借问酒家何处有牧童遥指杏花村";Console.WriteLine("原字符串为:{0}",str);//添加字符
str=str.Insert(5,",");str=str.Insert(13,",");str=str.Insert(17,"。");str=str.Insert(23,",");四、任务实施:str=str.Insert(30,"?");str=str.Insert(36,"。");Console.WriteLine("添加标点符号后:{0}",str);//删除字符
str=str.Remove(8,1);str=str.Remove(17,1);str=str.Remove(25,1);Console.WriteLine("删除空格符号后:{0}",str);Console.ReadLine();五、任务小结:1、在给字符串添加字符时要注意,添加1个字符过后字符串的长度会增加1。2、在给字符串删除1个字符过后字符串的长度会减少1。第5章字符和字符串
——任务六错乱古诗的拼接
一、任务描述:一个字符串string类对象被赋值后,其内容的更改就显得不太灵活。StringBuilder类是可变字符串类,此类表示值为可变字符序列的对象。创建1个StringBuilder对象,使用StringBuilder类的Append、AppendFormat、Insert、Remove和Replace方法,组织并输出古诗《清明》,运行如下图所示:二、任务准备:1、StringBuilder类的定义publicStringBuilder(stringvalue,intcap)StringBuilder构造方法参数及说明编号参数说明1stringvalueStringBuilder对象引用的字符串2intcapStringBuilder对象的初始大小StringBuilder类有6种不同的构造方法,这里只介绍最常用的一种。语法格式如下:二、任务准备:2、
StringBuilder类的使用StringBuilder操作字符串的常见方法编号方法说明1Append将文本或字符串追加到指定对象的末尾2AppendFormat自定义变量的格式,并追加到指定对象的末尾3Insert将字符串或对象添加到StringBuilder对象的指定位置4Remove从StringBuilder对象中移除指定个数的字符5Replace用另一个指定字符替换StringBuilder对象内的字符要使用StringBuilder类,必须引用Syatem.Text命名空间。下面列出StringBuilder类几个操作字符串的常见方法:三、任务分析:在初始信息录入过后,情况的变更经常会要求我们对信息进行修改,StringBuilder提供一些很好的方法,在需要对大量字符串进行拼接时,大大提高了程序的效率。四、任务实施:1.创建1个名为PoemStringBuilder的控制台应用程序。2.打开“Program.cs”代码文件,输入以下代码:staticvoidMain(string[]args){StringBuilderStrb=newStringBuilder("《清明》\n");//实例化StringBuilder对象
Strb.Append("唐.杜甫\n");//追加作者
Strb.Append("借问酒家何处有?\n牧童遥指杏花村。\n");//追加诗词后两句
Strb.Insert(9,"\n清明时节雨纷纷,\n路上行人欲断魂。");//在位置9插入诗词前两句
Strb.Replace("杜甫","杜牧");//将作者名字替换成”杜牧”
Console.WriteLine(Strb);Console.ReadLine();}五、任务小结:1、要注意StringBuilder类个方法的参数及使用。2、由于String类型中所存放的是只读的Char数组,因此,在使用“+”对字符串进行拼接时,系统会在内存中重新分配内存来存放拼接后的字符串,在时间和空间上会造成很大的浪费。第5章字符和字符串
——任务七变化多样的字符串
一、任务描述:生活中的字符串有多种多样的形式,例如:“$2.000”、“1.20E+001”、“10”都是一个字符串,但是它们又各自有自己的意义。比如:“$2.000”表示的是货币,“1.20E+001”表示的是科学计数法,“10”表示字符串10,同时有时候它也是数值10。本任务中,我们就来认识字符串表现形式的多样化。二、任务准备:1、格式化字符串通过前面的知识大家已经知道,为了显示给定变量的值,往往要用到ToString()方法,但如果用户要用不同的格式来显示变量的值,这时就要将字符串进行格式化,然后再显示。Format(stringformat,objectorgs);可以将任何数值、日期时间、枚举等类型的数据表示为字符串,并将该字符串按照规定的格式显示出来。二、任务准备:Format指定要使用的格式字符串,其格式为“{占位符:格式说明符宽度}”,在.NETFramework中规定的格式说明符见下表。格式化字符串格式说明字符说明示例输出C货币string.Format("{0:C3}",2)$2.000D十进制string.Format("{0:D3}",2)002E科学计数法string.Format("{0:E2}"1.20E+001G常规string.Format("{0:G}",2)2N用分号隔开的数字string.Format("{0:N}",250000)250,000.00X十六进制string.Format("{0:X000}",12)C二、任务准备:2、字符串与其他数据类型的转换(1)字符串与数字类型的转换1)使用Convert将字符串转换成数字Convert.To数据类型(字符串)注意:将数字字符串转换为指定的数字类型,但字符串一定是数字字符串。二、任务准备:2)使用Parse将字符串转换成数字数字类型.Parse(字符串)用于将数字字符串转换为指定的数字类型,但字符串一定是数字字符串。3)使用TryParse将字符串转换成数字数字类型.TryParse(字符串)这个方法用于将数字字符串转换为数字,并返回一个布尔值,以表明转换是否成功,从而可以免去添加异常处理代码的麻烦。二、任务准备:2、字符串与其他数据类型的转换(2)字符串与时间类型的转换1)使用Parse将字符串转换成日期时间类型DateTime.Parse(字符串)2)使用Convert将字符串转换成日期时间类型Convert.ToDateTime(字符串)同样要求字符串必须是合法的能够转换成日期时间类型的字符串。三、任务分析:1、在实际操作中,根据情况合理选择字符串的转换形式。四、任务实施:1.建立1个的控制台应用程序。2.打开“Program.cs”代码文件,将数字字符串10转换成整型的数字10,输入以下代码:staticvoidMain(string[]args){intip=Convert.ToInt32("10");Console.WriteLine(ip);Console.Read
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 采购合同制定高效协作的关键3篇
- 采购合同销售合同的修改与终止3篇
- 采购合同评审表的解答与指导3篇
- 2024年度离职员工离职后劳动合同解除及权利义务确认协议3篇
- 2024年度美术教师跨学科教育项目聘任合同模板3篇
- 2024年智慧城市建设项目增资扩股股权变更合同3篇
- 2024年物业管理服务外包合同(含智能化系统)
- 2024年度新型设备融资租赁抵押担保合同诉状2篇
- 2024年服务外包合同:软件开发
- 2024年度智能照明系统安装施工合同协议书3篇
- 2023-2024学年贵州省贵阳市南明区四年级数学第一学期期末含答案
- 金融服务营销PPT完整全套教学课件
- 经济博弈论(谢织予)课后答案及补充习题答案
- 国开电大2022年春季期末考试《园产品贮藏技术》试题(试卷代号2713)
- 有机波谱分析考试题库及答案1
- 2023海南省图书馆公开招聘财政定额补贴人员15人(一)模拟备考预测(共1000题含答案解析)综合试卷
- 导游考试指南:一个月过北京导游考试
- 跨境电商平台认知Lazada
- 办公楼VRV多联空调与中央空调系统方案比较
- GB/T 33609-2017软质泡沫聚合材料滞后损失试验方法
- 现当代文学习题(北大、复旦版)
评论
0/150
提交评论