资源预览内容
第1页 / 共52页
第2页 / 共52页
第3页 / 共52页
第4页 / 共52页
第5页 / 共52页
第6页 / 共52页
第7页 / 共52页
第8页 / 共52页
第9页 / 共52页
第10页 / 共52页
亲,该文档总共52页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
http:/www.wenyuan.com.cn/webnew/第第5章章数据的输入和输出数据的输入和输出(时间:1.5次课,3学时)http:/www.wenyuan.com.cn/webnew/第第5章章数据的输入和输出数据的输入和输出n输入输入/输出是程序得以实际应用的必要措施,在程序中实现数据的输入和输出也是每个程序员必输出是程序得以实际应用的必要措施,在程序中实现数据的输入和输出也是每个程序员必须掌握的基本编程技术。在前面各章节的举例中,我们都已经使用了须掌握的基本编程技术。在前面各章节的举例中,我们都已经使用了C#语言的部分输入语言的部分输入/输出系输出系统,其中用得最多的是统,其中用得最多的是.NET类库中类库中Console类的一个方法类的一个方法Console.WriteLine(),这个方法是将,这个方法是将在程序中生成的数据或信息输出到控制台在程序中生成的数据或信息输出到控制台(Console)中。另外,程序不光是要向控制台输出数据,中。另外,程序不光是要向控制台输出数据,还要从控制台读取输入的数据,或者要求输出的数据具有一定的格式。一般说来,数据的输入还要从控制台读取输入的数据,或者要求输出的数据具有一定的格式。一般说来,数据的输入/输出输出(I/O)方式有两种:控制台方式有两种:控制台I/O和文件和文件I/O。C#的的I/O系统非常庞大,也有控制台系统非常庞大,也有控制台I/O和文件和文件I/O两大部分,本章只介绍控制台两大部分,本章只介绍控制台I/O部分,而文件部分,而文件I/O部分将在后续章节详细介绍。部分将在后续章节详细介绍。nC#的控制台的控制台I/O主要是通过命名空间主要是通过命名空间System中的类中的类Console来实现的,该类给出了标准的输入来实现的,该类给出了标准的输入和输出的方法,这些方法可用于从控制台读写字符。和输出的方法,这些方法可用于从控制台读写字符。n本章介绍的内容不是任何本章介绍的内容不是任何C#语法,而是语法,而是.NET框架中常用的控制台输入框架中常用的控制台输入/输出的类和方法的使用格输出的类和方法的使用格式。式。n本章学习重点:本章学习重点:l掌握在控制台中输入掌握在控制台中输入/输出数据的方法输出数据的方法l掌握输出格式化数据的方法掌握输出格式化数据的方法l掌握处理字符串的方法掌握处理字符串的方法http:/www.wenyuan.com.cn/webnew/第第5章章数据的输入和输出数据的输入和输出n5.1控制台输入控制台输入n5.2控制台输出控制台输出n5.3处理字符串的方法处理字符串的方法http:/www.wenyuan.com.cn/webnew/5.1控制台输入控制台输入u5.1.1Console.Read()方法方法u5.1.2Console.ReadLine()方法方法http:/www.wenyuan.com.cn/webnew/5.1控制台输入控制台输入nSystem.Console类的类的Read()和和ReadLine()方法可用来实现控制台输入,本节我们将方法可用来实现控制台输入,本节我们将详细介绍如何使用这两种方法获取输入。详细介绍如何使用这两种方法获取输入。http:/www.wenyuan.com.cn/webnew/5.1.1Console.Read()方法方法nRead()方法每次从输入流方法每次从输入流(控制台控制台)中读取一个字符,直到收到中读取一个字符,直到收到Enter键键才返回。将接收的字符以才返回。将接收的字符以int型型(32位整数位整数)值返回给变量;如果输入流中值返回给变量;如果输入流中没有数据,则返回没有数据,则返回-1。nRead()方法是一个静态方法,我们可以直接通过类名方法是一个静态方法,我们可以直接通过类名Console调用它,调用它,调用的格式为调用的格式为Console.Read。Read()方法的原型为:方法的原型为:publicstaticintRead()。n如果我们输入了多个字符,然后按如果我们输入了多个字符,然后按Enter键键(此时输入流中将包含用户输此时输入流中将包含用户输入的字符,加上入的字符,加上Enter键和换行符键和换行符rn),则,则Read()方法只返回用方法只返回用户输入的第一个字符。但我们可通过对程序的循环控制,多次调用户输入的第一个字符。但我们可通过对程序的循环控制,多次调用Read()方法来获取所有输入的字符。方法来获取所有输入的字符。nRead()方法返回给变量的数据的类型是方法返回给变量的数据的类型是32位整数,如果需要得到输入位整数,如果需要得到输入的字符,则必须通过数据类型显式转换才可以得到相应的字符。的字符,则必须通过数据类型显式转换才可以得到相应的字符。http:/www.wenyuan.com.cn/webnew/5.1.1Console.Read()方法方法n【例例5.1】Read()方法的使用。方法的使用。nusingSystem;nclassMyRead1nnpublicstaticvoidMain()nninta;ncharch;nConsole.Write(请从键盘输入一个字符:请从键盘输入一个字符:);na=Console.Read();/程序运行到程序运行到Read方法会暂停,直到用户在控制台中按任意键方法会暂停,直到用户在控制台中按任意键nch=(char)a;/显式类型转换显式类型转换nConsole.WriteLine(a);nConsole.WriteLine(ch);nnn程序运行结果:程序运行结果:n请从键盘输入一个字符:请从键盘输入一个字符:a(回车回车)n97nahttp:/www.wenyuan.com.cn/webnew/5.1.1Console.Read()方法方法n【例例5.2】通过通过Read()方法从控制台接收用户输入的一系列字符,然后把用户输入的内容显示出来。方法从控制台接收用户输入的一系列字符,然后把用户输入的内容显示出来。nusingSystem;nclassMyRead2nnpublicstaticvoidMain(stringargs)nnstringbuf;nConsole.Write(请输入字符串请输入字符串(按按Enter键接收输入,按键接收输入,按x键退出程序键退出程序):);nbuf=;nwhile(true)nnintc=Console.Read();/接收一个字符接收一个字符nif(char)c=x&(char)c=X)return;/按下按下x或或X键,退出本程序键,退出本程序nif(c=-1)Console.WriteLine(不输入不输入);nbuf+=(char)c;/将字符组成字符串将字符组成字符串nif(c=n)break;nnConsole.Write(用户输入的内容为:用户输入的内容为:);nConsole.WriteLine(0,buf);nnn在本程序中,可以一次输入单个字符,也可以一次输入多个字符。当按下在本程序中,可以一次输入单个字符,也可以一次输入多个字符。当按下x或或X键再按下键再按下Enter键后将会退出本程序。键后将会退出本程序。http:/www.wenyuan.com.cn/webnew/5.1.2Console.ReadLine()方法方法nReadLine()方法用于从控制台中一次读取一行字符串,直到遇到方法用于从控制台中一次读取一行字符串,直到遇到Enter键才返回读取的字符串。但此字符串中不包含键才返回读取的字符串。但此字符串中不包含Enter键和换行符键和换行符(rn)。如果没有收到任何输入,或接收了无效的输入,那么。如果没有收到任何输入,或接收了无效的输入,那么ReadLine()方法将返回方法将返回null。nReadLine()方法也是一个静态方法,可以直接通过类名方法也是一个静态方法,可以直接通过类名Console来调用来调用它,调用的格式为它,调用的格式为Console.ReadLine。nReadLine()方法的原型为:方法的原型为:publicstaticstringReadLine()http:/www.wenyuan.com.cn/webnew/5.1.2Console.ReadLine()方法方法n【例例5.3】使用使用ReadLine()方法。方法。nusingSystem;nclassMyReadlinennpublicstaticvoidMain()nninti;nstringstr;nConsole.Write(请输入你的姓名:请输入你的姓名:);nstr=Console.ReadLine();nConsole.Write(用户的姓名为:用户的姓名为:);nConsole.WriteLine(str);nnn程序的运行结果:程序的运行结果:n请输入你的姓名:王红请输入你的姓名:王红(回车回车)n用户的姓名为:王红用户的姓名为:王红http:/www.wenyuan.com.cn/webnew/5.2控制台输出控制台输出u5.2.1数据的格式化数据的格式化u5.2.2格式化说明符格式化说明符http:/www.wenyuan.com.cn/webnew/5.2控制台输出控制台输出n在前述的各章节中,我们同样也多次使用了在前述的各章节中,我们同样也多次使用了Console类的类的Write()和和WriteLine()方法来方法来输出程序的计算结果。日常生活中,有时我输出程序的计算结果。日常生活中,有时我们不仅仅要求程序简单地输出数据,还要求们不仅仅要求程序简单地输出数据,还要求能输出具有一定格式的数据,以丰富我们应能输出具有一定格式的数据,以丰富我们应用程序的应用需求。用程序的应用需求。http:/www.wenyuan.com.cn/webnew/5.2.1数据的格式化数据的格式化n在日常生活中,各行各业的数据表示形式有多种。例如,一个十进制数字在日常生活中,各行各业的数据表示形式有多种。例如,一个十进制数字965840,可能有以下表示形式:,可能有以下表示形式:l表示人民币:¥表示人民币:¥9,658.40l表示美元:表示美元:9,658.40l用于科学计算:用于科学计算:9.65840105,在,在C#中表示为中表示为9.65840E5n可见,对于一个程序来说,它的计算结果只是一个无任何语义的数字。所以如果可见,对于一个程序来说,它的计算结果只是一个无任何语义的数字。所以如果希望一个应用程序的计算结果在输出时能反映出它的应用特征,则必须在程序的希望一个应用程序的计算结果在输出时能反映出它的应用特征,则必须在程序的输出语句中给出所需数据格式的转换控制。输出语句中给出所需数据格式的转换控制。C#语言具有将数字在不同的表示形语言具有将数字在不同的表示形式之间相互转换的功能式之间相互转换的功能数据的格式化。数据的格式化。n数据的格式化是指通过程序数据的格式化是指通过程序(方法方法),将数据的表现形式转换为一定样式的过程。,将数据的表现形式转换为一定样式的过程。C#语言是通过语言是通过.NET类库方法、格式化字符串以及其他的控制信息共同完成的。类库方法、格式化字符串以及其他的控制信息共同完成的。http:/www.wenyuan.com.cn/webnew/5.2.1数据的格式化数据的格式化n一般实现把数字转换为指定格式的字符串输出的基本方式有一般实现把数字转换为指定格式的字符串输出的基本方式有3种:种:lWrite()和和WriteLine()方法可以直接把数值类型变量的值,转换成字符串输出到控制台中,并可使用格式说明符来控制方法可以直接把数值类型变量的值,转换成字符串输出到控制台中,并可使用格式说明符来控制输出的数据格式。输出的数据格式。uWrite()方法用来向控制台输出一条信息,并且光标仍在输出信息的末尾。一般方法用来向控制台输出一条信息,并且光标仍在输出信息的末尾。一般Write()方法中有以下两种常用的形式:方法中有以下两种常用的形式:npublicstaticvoidWrite(数值数据类型数值数据类型变量变量);/直接输出变量的值直接输出变量的值npublicstaticvoidWrite(N,M:Yn,变量变量1,变量变量2);n其中:其中:N表示输出变量的序号。表示输出变量的序号。N为为0对应输出的第对应输出的第1个变量,个变量,N为为1则对应输出的第则对应输出的第2个变量,依次类推。个变量,依次类推。,M可选项。可选项。M表示输出的变量在控制台中所占据的字符个数,如果该数字为负数,则输出按照左对齐方式;如果表示输出的变量在控制台中所占据的字符个数,如果该数字为负数,则输出按照左对齐方式;如果该数字为正数,则输出按照右对齐的方式。该数字为正数,则输出按照右对齐的方式。:Yn可选项。其中可选项。其中Y是格式化字符串,它指的是数据的输出格式说明符,将在是格式化字符串,它指的是数据的输出格式说明符,将在5.2.2节中给出。节中给出。n为一个正整数。表为一个正整数。表示了数据的精度范围示了数据的精度范围(有效数字范围有效数字范围),它用于控制当前数据在格式化后表现出来的有效数字个数。,它用于控制当前数据在格式化后表现出来的有效数字个数。n例如:例如:ninta=32767;ndoubled=456.56789;nConsole.Write(a=0x0,8:Xtd=1,10:F3,a,d);nConsole.Write(a=0x0,-8:Xtd=1,-10:F3,a,d);n输出结果:输出结果:na=0x7fffd=456.568a=0x7fffd=456.568n本例中的格式说明符本例中的格式说明符X和和F在在5.2.2节中给出说明。节中给出说明。http:/www.wenyuan.com.cn/webnew/5.2.1数据的格式化数据的格式化uWriteLine()方法用来向控制台产生一行信息,并在信息的尾部自动添加方法用来向控制台产生一行信息,并在信息的尾部自动添加“rn”操作符,操作符,即输出信息后光标自动移到下一新行。同即输出信息后光标自动移到下一新行。同Write()方法类似,方法类似,WriteLine方法有以下两种方法有以下两种常用的形式:常用的形式:npublicstaticvoidWriteLine(数值数据类型数值数据类型变量变量);npublicstaticvoidWriteLine(N,M:Y,变量变量1,变量变量2);nWriteLine()方法的参数与方法的参数与Write()方法的参数意义一样。方法的参数意义一样。n例如:例如:ninta=32767;ndoubled=456.56789;nConsole.WriteLine(a=0x0,8:Xtd=1,10:F3,a,d);nConsole.WriteLine(a=0x0,-8:Xtd=1,-10:F3,a,d);n输出结果:输出结果:na=0x7fffd=456.568na=0x7fffd=456.568n可见此例输出结果与可见此例输出结果与Write()方法不同的是每一个方法不同的是每一个WriteLine()方法输出一行信息后自动方法输出一行信息后自动换行。换行。http:/www.wenyuan.com.cn/webnew/5.2.1数据的格式化数据的格式化l调用调用ToString方法中使用格式说明符。方法中使用格式说明符。ToString方法是方法是System.Object类中的一个方法,此方法可以将变量的值转换为由数字、类中的一个方法,此方法可以将变量的值转换为由数字、数学符号等组成的字符串。由于所有的类都是从数学符号等组成的字符串。由于所有的类都是从Object类中派生出来的,因此,所有的对类中派生出来的,因此,所有的对象都可以使用象都可以使用ToString方法,例如各种基本数据类型方法,例如各种基本数据类型(int32、int64)等。等。nToString方法的调用格式为:类对象名称方法的调用格式为:类对象名称.ToString(“格式说明符格式说明符”)n例如:例如:nintvar=8769;nstringstr=var.ToString(C);/使用使用ToString()方法,将整型数转换为金额格方法,将整型数转换为金额格n式表示输出结果将是:¥式表示输出结果将是:¥8,769.00n其中格式说明符其中格式说明符C是用于金额的格式说明符,我们将在是用于金额的格式说明符,我们将在5.2.2节中介绍。节中介绍。n调用调用String类的类的Format静态方法。静态方法。Format()方法可用于将信息格式化为一个新的字符串。由于方法可用于将信息格式化为一个新的字符串。由于Format()方法是静态的,因方法是静态的,因此可以以此可以以String.Format的方式直接调用。的方式直接调用。Format方法常用的使用格式:方法常用的使用格式:nstringstr=String.Format(N,M:Yn,变量变量1,变量变量2,.);n其中:其中:str是格式化后得到的字符串;其他的参数与是格式化后得到的字符串;其他的参数与Write和和WriteLine方法中的参数相同。方法中的参数相同。Format()方法还有两种使用格式可参阅方法还有两种使用格式可参阅MSDN文档。文档。http:/www.wenyuan.com.cn/webnew/5.2.1数据的格式化数据的格式化n【例例5.4】基本的格式化方法。基本的格式化方法。nusingSystem;nclassMyFormatnnpublicstaticvoidMain()nninta=34567;nConsole.WriteLine(使用使用WriteLine格式化数据:格式化数据:);nConsole.WriteLine(n0:Cn0:C4,a);nConsole.WriteLine(n0:Fn0:F4,a);nConsole.WriteLine(使用使用ToString格式化数据:格式化数据:);nstringstr1=a.ToString(c);nstringstr2=a.ToString(c3);nConsole.WriteLine(str1);nConsole.WriteLine(str2);nConsole.WriteLine(使用使用String.Format格式化数据:格式化数据:);nstringstr4=String.Format(我们也能使用我们也能使用String.Format格式化数据:格式化数据:);nstringstr5=String.Format(n0:cn0:c0,a);nConsole.WriteLine(str4);nConsole.WriteLine(str5);nnhttp:/www.wenyuan.com.cn/webnew/5.2.1数据的格式化数据的格式化n程序运行结果:程序运行结果:n使用使用WriteLine格式化数据:格式化数据:n¥34,567.00n¥34,567.0000n34567.00n34567.0000n使用使用ToString格式化数据:格式化数据:n¥34,567.00n¥34,567.000n使用使用String.Format格式化数据:格式化数据:n¥34,567.00n我们也能使用我们也能使用String.Format格式化数据:格式化数据:n¥34,567n在本例中将变量在本例中将变量a中的数字格式化为金额、小数,其中的说明符将在中的数字格式化为金额、小数,其中的说明符将在5.2.2节中详细节中详细介绍。介绍。http:/www.wenyuan.com.cn/webnew/5.2.2格式化说明符格式化说明符n.NET框架体系规定可以使用两种格式进行数据的格式化:一种是由系统框架体系规定可以使用两种格式进行数据的格式化:一种是由系统定义的标准格式,另一种是用户自定义格式。这两种格式主要包含了各定义的标准格式,另一种是用户自定义格式。这两种格式主要包含了各种用于格式化数据的格式控制字符,使用这些控制字符组成所需的数据种用于格式化数据的格式控制字符,使用这些控制字符组成所需的数据格式,然后由格式,然后由5.2.1节中所述节中所述3种格式化方式即可实现数据的格式化了。种格式化方式即可实现数据的格式化了。n1. 标准格式说明符n标准格式说明符定义了人们常用的标准格式说明符定义了人们常用的8种数据表示形式,如表种数据表示形式,如表5.1所示。所示。http:/www.wenyuan.com.cn/webnew/5.2.2格式化说明符格式化说明符格式说明符描 述输出样式输出范例C或c货币金额格式xx,xxx.xx(如果在中文操作系统中使用,货币符号为¥)12,345.67D或d整数数据格式-xxxxxxx-1234567E或e科学计数法格式-x.xxxxE+xxx-x.xxxxE-xxx-1.234567E+123-1.234567E-123F或f浮点数据格式-xxxxxx.xx-1234567.89G或g通用数据格式随具体情况而定,将使用最紧凑的格式N或n自然数据格式-xx,xxx.xx-12,345.67X或x十六进制数据格式返回数据的十六进制数据表示方式12d654R或r来回转换(roundtrip)将数字转换为字符串后,再转换为数字时,精度不变表5.1 标准格式说明符http:/www.wenyuan.com.cn/webnew/5.2.2格式化说明符格式化说明符n标准格式的一般形式是:标准格式的一般形式是:N,M:Ynl其中:其中:uN表示输出变量的序号。表示输出变量的序号。N为为0对应输出的第对应输出的第1个变量,个变量,N为为1则对应输出的第则对应输出的第2个变量,依次类推。个变量,依次类推。u,M是可选项。是可选项。M表示输出的变量在控制台中所占据的字符个数,如果该数字为负数,则输出按照左对齐方式;如果该表示输出的变量在控制台中所占据的字符个数,如果该数字为负数,则输出按照左对齐方式;如果该数字为正数,则输出按照右对齐的方式。数字为正数,则输出按照右对齐的方式。u:Yn是可选项。是可选项。Y是格式化说明符,它指的是数据的输出格式说明符是格式化说明符,它指的是数据的输出格式说明符(如表如表5.1所示所示),这些字符是由系统定义的,它们,这些字符是由系统定义的,它们基本涵盖了基本涵盖了.NET框架定义的所有数值类型数据的表现形式。框架定义的所有数值类型数据的表现形式。un为一个正整数,表示了数据的精度范围为一个正整数,表示了数据的精度范围(有效数字范围有效数字范围),它用于控制当前数据在格式化后表现出来的有效数字个数。,它用于控制当前数据在格式化后表现出来的有效数字个数。l货币金额格式货币金额格式字符字符“C或或c”用来组成将数据转换为货币金额格式的字串,在字符用来组成将数据转换为货币金额格式的字串,在字符“C或或c”后面的数字定义了货币金额数据小数点后保留后面的数字定义了货币金额数据小数点后保留的数字个数,如果没有定义任何数字,则默认小数点后保留的数字个数,如果没有定义任何数字,则默认小数点后保留2位数字。位数字。n例如:例如:ninta=123456;ndoubled=1234.5678;nstringstr1=String.Format(0:c,a);/得到的字串是得到的字串是¥123,456.00nstringstr2=String.Format(0:c,d);/得到的字串是得到的字串是¥1,234.57nstringstr3=String.Format(0:c4,a);/得到的字串是得到的字串是n¥123,456.0000nstringstr4=String.Format(0:c4,d);/得到的字串是得到的字串是¥1,234.5678nstringstr5=d.ToString(c);/得到的字串是得到的字串是¥1,234.57nstringstr6=d.ToString(c4);/得到的字串是得到的字串是¥1,234.5678http:/www.wenyuan.com.cn/webnew/5.2.2格式化说明符格式化说明符n提示:提示:所显示的货币金额符号同用户使用的操作系统有关,如果本例在所显示的货币金额符号同用户使用的操作系统有关,如果本例在Windows2000Professional英文版中运行,则结果中显示的英文版中运行,则结果中显示的货币符号是;如果我们使用的是中文版操作系统,则将会显货币符号是;如果我们使用的是中文版操作系统,则将会显示的货币符号可能就是¥。示的货币符号可能就是¥。http:/www.wenyuan.com.cn/webnew/5.2.2格式化说明符格式化说明符l整数数据格式整数数据格式字符字符“D或或d”用来组成将数据表示为十进制整数数据的格式化字符串。字符用来组成将数据表示为十进制整数数据的格式化字符串。字符“D或或d”后面的数字规定了要表示的数据位数,如果这个数字小于整后面的数字规定了要表示的数据位数,如果这个数字小于整数数据的位数,则显示所有的整数位;如果这个数字大于整数数据的位数,则在整数数据的前面用数字数数据的位数,则显示所有的整数位;如果这个数字大于整数数据的位数,则在整数数据的前面用数字“0”补足所有的位数。补足所有的位数。n例如:例如:ninta=123456;nstringstr1=String.Format(0:d,a);/得到的字串是得到的字串是123456nstringstr2=String.Format(0:d6,a);/得到的字串是得到的字串是123456nstringstr3=String.Format(0:d7,a);/得到的字串是得到的字串是0123456nstringstr4=a.ToString(d);/得到的字串是得到的字串是123456nstringstr5=a.ToString(d7);/得到的字串是得到的字串是0123456l科学计数法格式科学计数法格式字符字符“E或或e”用来将数据转换为科学计数法形式。在字符用来将数据转换为科学计数法形式。在字符“E或或e”后面的数字用来规定科学计数法表示数据的小数点后数字的个数。如字符后面的数字用来规定科学计数法表示数据的小数点后数字的个数。如字符“E或或e”后面没有数字,则显示后面没有数字,则显示7位有效数字。位有效数字。n例如:例如:ninta=123456;ndoubled=1234.5678;nstringstr1=String.Format(0:e,a);/得到的字串是得到的字串是1.234560e+005nstringstr2=String.Format(0:e,d);/得到的字串是得到的字串是1.234568e+003nstringstr3=String.Format(0:e4,a);/得到的字串是得到的字串是1.2346e+005nstringstr4=String.Format(0e4,d);/得到的字串是得到的字串是1.2346e+003nstringstr5=a.ToString(E);/得到的字串是得到的字串是1.234560E+005nstringstr6=d.ToString(E4);/得到的字串是得到的字串是1.2346E+003l浮点数据格式浮点数据格式字符字符“F或或f”用来描述带有小数点的数据的显示形式。字符用来描述带有小数点的数据的显示形式。字符“F或或f”后面的数字规定了小数点后的数据位数。如果没有指定数字,则数据默认保留后面的数字规定了小数点后的数据位数。如果没有指定数字,则数据默认保留两位小数,如果指定的数字大于数据本身小数部分的位数,则在小数部分数字的最后补两位小数,如果指定的数字大于数据本身小数部分的位数,则在小数部分数字的最后补“0”。http:/www.wenyuan.com.cn/webnew/5.2.2格式化说明符格式化说明符l自然数据格式自然数据格式字符字符“N或或n”用来表示自然数据格式。这种数据格式将数据格式化成带逗号和小数点,即表示为用来表示自然数据格式。这种数据格式将数据格式化成带逗号和小数点,即表示为“dd,ddd,ddd.dd”的形的形式。这种数字分组的表示形式多用于一些正规的场合,便于直观了解数据的大小量级。字符式。这种数字分组的表示形式多用于一些正规的场合,便于直观了解数据的大小量级。字符“N或或n”后面的数字规定了后面的数字规定了数据格式中小数点后面的数字个数。数据格式中小数点后面的数字个数。ninta=123456;ndoubled=1234.5678;nstringstr1=String.Format(0:n,a);/得到的字串是得到的字串是123,456.00nstringstr2=String.Format(0:n,d);/得到的字串是得到的字串是1,234.57nstringstr3=a.ToString(n4);/得到的字串是得到的字串是123,456.0000nstringstr4=d.ToString(n4);/得到的字串是得到的字串是1,234.5678l十六进制数据格式十六进制数据格式字符字符“X或或x”用于将数据表示为十六进制格式。字符用于将数据表示为十六进制格式。字符“X或或x”后面的数字表示了格式化数据的数字个数,其规定与整数后面的数字表示了格式化数据的数字个数,其规定与整数数据格式类似。数据格式类似。n例如:例如:ninta=123456;nstringstr1=String.Format(0:x,a);/得到的字串是得到的字串是1e240nstringstr2=a.ToString(x5);/得到的字串是得到的字串是1e240nstringstr3=a.ToString(x6);/得到的字串是得到的字串是01e240nstringstr4=a.ToString(x7);/得到的字串是得到的字串是001e240l保持精度保持精度(来回转换来回转换)将数字从一种格式转换为另一种格式时,可能会降低精度。字符将数字从一种格式转换为另一种格式时,可能会降低精度。字符“R或或r”用于将字符串转换为数字是保持其精度。使用该用于将字符串转换为数字是保持其精度。使用该格式说明符后,运行时环境将尽可能保持原有数字的精度。格式说明符后,运行时环境将尽可能保持原有数字的精度。http:/www.wenyuan.com.cn/webnew/5.2.2格式化说明符格式化说明符n2. 自定义数字格式说明符n有时候,需要更精确地按某种意图控制数字的格式,比如格有时候,需要更精确地按某种意图控制数字的格式,比如格式化驾驶证号或社会保险号时,可能想加入短划线;而对于式化驾驶证号或社会保险号时,可能想加入短划线;而对于电话号码,则想加入括号和短划线等,这时就需要使用一些电话号码,则想加入括号和短划线等,这时就需要使用一些自定义的格式说明符来实现所需的数据格式。表自定义的格式说明符来实现所需的数据格式。表5.2所示为所示为自定义数据格式说明符。自定义数据格式说明符。http:/www.wenyuan.com.cn/webnew/5.2.2格式化说明符格式化说明符格式说明符描 述0零占位符,如果可能,则填充位#数字占位符,如果可能,则填充位.在数字中显示小数点,在数字中用作千位分隔符。也可用作数字比例换算,例如,格式字符串“0,”将 100,000,000 简单表示为100。使用“,”字符指示比例换算在格式化数字中不包括千位分隔符。因此,若要将数字缩小 1,000,000 倍并插入千位分隔符,应使用格式字符串“#,#0,”%将数字显示为百分比值(如:1.00被显示为100%)E+0, E-0, e+0, e-0科学计数法形式,数字0的个数表示10的指数用几位数字表示显示特殊字符。如可以是转义字符之一xyz显示单引号内的文本“xyz”显示双引号内的文本;“;”用来分隔格式字符串中的正数、负数和零各部分表5.2 自定义数据格式说明符 http:/www.wenyuan.com.cn/webnew/5.2.2格式化说明符格式化说明符n【例例5.5】使用自定义说明符显示特殊数据格式使用自定义说明符显示特殊数据格式(用用WriteLine()方法实现输出方法实现输出)。nusingSystem;nusingSystem.Globalization;nclassCustomFormat1nnpublicstaticvoidMain()nninta=1234;nfloatb=12.34f;n/0格式化说明符格式化说明符nConsole.WriteLine(n0格式化说明符格式化说明符:);nConsole.WriteLine(00:0000000,a);nConsole.WriteLine(00:0000000,b);n/#格式化说明符格式化说明符nConsole.WriteLine(n#格式化说明符格式化说明符:);nConsole.WriteLine(00:0#,a);nConsole.WriteLine(00:0#,b);n/,格式化说明符格式化说明符nConsole.WriteLine(n,格式化说明符格式化说明符:);nConsole.WriteLine(00:0,1000000);/,用作倍增器用作倍增器nConsole.WriteLine(00:#,#,#0,2000000);/,用作分隔符用作分隔符nConsole.WriteLine(00:#,#,#0,3);n/%格式化说明符格式化说明符nConsole.WriteLine(n%格式化说明符格式化说明符:);nConsole.WriteLine(00:0%,a);/将原数乘将原数乘100%nConsole.WriteLine(00:0%,b);n/单引号单引号格式化说明符格式化说明符nConsole.WriteLine(n单引号格式化说明符单引号格式化说明符:);nConsole.WriteLine(00:mynumberis:0,a);nConsole.WriteLine(00:mynumberis:0,b);nConsole.WriteLine(00:mine:0,a);nConsole.WriteLine(00:mine:0,b);nnhttp:/www.wenyuan.com.cn/webnew/5.2.2格式化说明符格式化说明符n程序的执行结果:程序的执行结果:n0格式化说明符格式化说明符:n12340001234n12.340000012n#格式化说明符格式化说明符:n123401234n12.3400012n,格式化说明符格式化说明符:n10000001n20000002,000,000n33n%格式化说明符格式化说明符:n1234123400%n12.341234%n单引号格式化说明符单引号格式化说明符:n1234mynumberis:1234n12.34mynumberis:12n1234mine:1234n12.34mine:12http:/www.wenyuan.com.cn/webnew/5.2.2格式化说明符格式化说明符n【例例5.6】使用使用for循环创建一个负数,然后将其递增为循环创建一个负数,然后将其递增为0和正数。并且可以使用同一个和正数。并且可以使用同一个WriteLine来显示它们。本例将给出来显示它们。本例将给出3种不同的情况。种不同的情况。nusingSystem;nclassCustomFormat2nnpublicstaticvoidMain()nnConsole.WriteLine(n第一种情况第一种情况);nfor(intx=-100;x=100;x+=100)nnConsole.WriteLine(0:000;-00000;0,x);nnConsole.WriteLine(n第二种情况第二种情况);nfor(intx=-100;x=100;x+=100)nnConsole.WriteLine(0:正数:正数:0;负数:负数:-0;零:零:0,x);nnConsole.WriteLine(n第三种情况第三种情况);nfor(intx=-100;x=100;x+=100)nnConsole.WriteLine(0:father:-0;mother:0;brother:0,x);nnnhttp:/www.wenyuan.com.cn/webnew/5.2.2格式化说明符格式化说明符n程序运行结果:程序运行结果:n第一种情况第一种情况n-00100n0n100n第二种情况第二种情况n负数:负数:-100n零:零:0n正数:正数:100n第三种情况第三种情况nmother:100nbrother:0nfather:-100http:/www.wenyuan.com.cn/webnew/5.2.2格式化说明符格式化说明符n3. 格式化日期和时间n获取日期和时间获取日期和时间C#和和.NET框架提供了一个用于存储日期和时间的类框架提供了一个用于存储日期和时间的类System.DateTime,我们可通过,我们可通过DateTime类获取完整的日期和时间。类获取完整的日期和时间。nDateTime类常用的类常用的3种使用格式:种使用格式:nDateTime(intyear,intmonth,intday);nDateTime(intyear,intmonth,intday,inthour,intminute,intsecond);nDateTime(intyear,intmonth,intday,inthour,intminute,intsecond,intmillisecond);n我们只要按要求给出所要表示的日期和时间的整数数值就可以构造出我们只要按要求给出所要表示的日期和时间的整数数值就可以构造出DateTime类的对象。类的对象。n例如,建立一个对象表示例如,建立一个对象表示2002年年10月月1日上午日上午8点点30分分15秒,可以用以下语句实现:秒,可以用以下语句实现:nDateTimemydate=newDateTime(2002,10,1,8,30,15);/生成一个生成一个DateTime类类的的n对象对象nDateTime类包含许多很有用的属性和方法,用于表示当前日期和时间等信息,类包含许多很有用的属性和方法,用于表示当前日期和时间等信息,DateTime类的属性如表类的属性如表5.3所示。所示。http:/www.wenyuan.com.cn/webnew/5.2.2格式化说明符格式化说明符属 性 名描 述New静态(static)属性,返回当前的时间Today静态(static)属性,返回当前的日期Date返回DateTime对象的日期部分DayOfYear返回DateTime对象中日期属于该年份的多少天,1365(闰年为366)之间Year返回DateTime对象的年份部分Month返回DateTime对象的月份部分Day返回DateTime对象的日期值,131之间DayOfWeek返回DateTime对象的星期部分(即星期几),17之间TimeOfDay返回DateTime对象的时间部分Hour返回DateTime对象的小时部分Minute返回DateTime对象的分钟部分Second返回DateTime对象的秒部分表5.3 DateTime类的属性 http:/www.wenyuan.com.cn/webnew/5.2.2格式化说明符格式化说明符属性名描 述Millisecond返回DateTime对象的毫秒部分Ticks返回DateTime对象对应的100纳秒数续表 http:/www.wenyuan.com.cn/webnew/5.2.2格式化说明符格式化说明符n以上属性都是静态属性,因此可以直接通过类名来取得它们的值,不需要通过对象来调用,例如:以上属性都是静态属性,因此可以直接通过类名来取得它们的值,不需要通过对象来调用,例如:nDateTime.NownDateTime.Todayn【例例5.7】获取日期和时间。获取日期和时间。nusingSystem;nusingSystem.Globalization;nclassDateTime1nnpublicstaticvoidMain()nnDateTimedate=newDateTime(2002,10,1);/构造一个构造一个DateTime对象对象2002年年10月月1日日nConsole.WriteLine(date);nConsole.WriteLine(date.DayOfWeek);/对象的星期数对象的星期数nConsole.WriteLine(date.DayOfYear);/对象的日期在一年中的序号对象的日期在一年中的序号nConsole.WriteLine(date.TimeOfDay);/对象的时间对象的时间nConsole.WriteLine(DateTime.Now);/调用调用DateTime的静态属性,获取程序运行的当前时间的静态属性,获取程序运行的当前时间nnn运行结果:运行结果:n2002-10-100:00:00/在创建在创建DateTime对象时,由于没有指定时间数值,所以时间数对象时,由于没有指定时间数值,所以时间数n值为值为0nTuesday/星期二星期二n274/2002年的第年的第274天天n00:00:00n2003-4-121:53:12http:/www.wenyuan.com.cn/webnew/5.2.2格式化说明符格式化说明符l格式化日期和时间数据格式化日期和时间数据在日常生活中,我们表示时间和日期的形式有多种。例如在日常生活中,我们表示时间和日期的形式有多种。例如2002年年10月月1日日16:00是一种表达方式,而这一日期和时间也可表示为:是一种表达方式,而这一日期和时间也可表示为:10/1/20024:00PM,除了这两种形式外,还有多种表达方式。如何让程序在输出,除了这两种形式外,还有多种表达方式。如何让程序在输出时能显示我们想要的日期和时间格式呢?时能显示我们想要的日期和时间格式呢?在在DateTime类中封装了类中封装了Write()方法,可以用来进行日期时间的格式化方法,可以用来进行日期时间的格式化操作。日期和时间数据的格式化说明符如表操作。日期和时间数据的格式化说明符如表5.4所示。所示。http:/www.wenyuan.com.cn/webnew/5.2.2格式化说明符格式化说明符格式化说明符描 述默认格式输出范例(中文版)d 短日期mm/dd/yyyy2002-9-23D长日期day ,month dd, yyyy2002年9月23日格式化说明符描 述默认格式输出范例(中文版)f长日期短时间day, month dd, yyyy hh:mm AM/PM2002年9月23日 16:00F长日期长时间day, month dd, yyyy hh:mm:ss AM/PM2002年9月23日 16:00:00g短日期短时间mm/dd/yyyy hh:mm2002-9-23 16:00G短日期长时间mm/dd/yyyy hh:mm:ss2002-9-23 16:00:00 M或m月份和天month dd9月23日R或rRFC1123国际标准格式ddd,dd month yyyyhh:mm:ss GMTMon,23 Sep 2002 16:00:00 GMTsISO8601标准格式yyyy-mm-dd hh:mm:ss2002-09-23 T16:12:23t短时间 hh:mm AM/PM12:30 PMT长时间hh:mm:ss AM/PM12:30:54 PMu格林尼治时间yyyy-mm-dd hh:mm:ss2002-09-23 12:30:54ZU格林尼治时间day, month dd, yyyy hh:mm:ss AM/PM2002-09-23 4:30:54PMY 或y年份和月份Month,yyyy2002年9月表5.4 日期和时间格式化说明符 注: 表5.4中,d表示日期;m表示月份;y表示年份;h表示小时;m表示分钟;s表示秒;GMT表示国际标准时间。 http:/www.wenyuan.com.cn/webnew/5.2.2格式化说明符格式化说明符n【例例5.8】日期时间格式。日期时间格式。nusingSystem;nusingSystem.Globalization;nclassDateTime2nnpublicstaticvoidMain()nn/使用使用Format方法方法nDateTimemydate1=newDateTime(2001,10,1,16,0,0);/构建对象构建对象n/使用使用Write()方法方法nDateTimemydate2=mydate1;nConsole.WriteLine(d:0:d,mydate2);nConsole.WriteLine(D:0:D,mydate2);nConsole.WriteLine(f:0:f,mydate2);nConsole.WriteLine(F:0:F,mydate2);nConsole.WriteLine(g:0:g,mydate2);nConsole.WriteLine(G:0:G,mydate2);nConsole.WriteLine(m:0:m,mydate2);nConsole.WriteLine(M:0:M,mydate2);nConsole.WriteLine(r:0:r,mydate2);nConsole.WriteLine(R:0:R,mydate2);nConsole.WriteLine(s:0:s,mydate2);n/Console.WriteLine(S:0:S,mydate2);/错误!错误!nConsole.WriteLine(u:0:u,mydate2);nConsole.WriteLine(d:0:y,mydate2);nConsole.WriteLine(Y:0:Y,mydate2);nnn读者可以上机运行该程序,并将结果与表读者可以上机运行该程序,并将结果与表5.4的内容进行比较,以便深刻理解和领会日期时间数据的格式。的内容进行比较,以便深刻理解和领会日期时间数据的格式。http:/www.wenyuan.com.cn/webnew/5.3处理字符串的方法处理字符串的方法u5.3.1String类的字符串方法类的字符串方法u5.3.2StringBuilder类的字符串方法类的字符串方法u5.3.3Parse()方法方法u5.3.4Convert类类http:/www.wenyuan.com.cn/webnew/5.3处理字符串的方法处理字符串的方法n前面已介绍了关于格式化字符串的所有知识,前面已介绍了关于格式化字符串的所有知识,由于字符串是一种特殊的数据类型,所以介由于字符串是一种特殊的数据类型,所以介绍有关方面深入的应用问题。绍有关方面深入的应用问题。http:/www.wenyuan.com.cn/webnew/5.3.1String类的字符串方法类的字符串方法n字符串变量是由关键字字符串变量是由关键字string来定义的,而来定义的,而String是是System命名空间命名空间中的一个类,所以对字符串进行操作可以调用中的一个类,所以对字符串进行操作可以调用String类的所有属性和方类的所有属性和方法。法。nString类的方法调用格式为:类的方法调用格式为:String.方法名方法名()n表表5.5列出了一些列出了一些String类常用的处理字符串的方法。有关表中方法的类常用的处理字符串的方法。有关表中方法的参数和参数和String类的其他方法可参见类的其他方法可参见MSDN文档。文档。http:/www.wenyuan.com.cn/webnew/5.3.1String类的字符串方法类的字符串方法方 法描 述静态方法静态方法Compare(字串1,字串2)比较两个指定的String对象(字串)的值CompareOrdlinal比较两个字串的值,但不考虑区域性语言或其他国际化问题Concat连接String的一个或多个实例,或Object的一个或多个实例的值的String 表示形式Copy创建一个与指定的String具有相同值的String的新实例Equals比较两个字串,以确定它们是否包含相同的值。如果是,返回true;否则返回falseForamt将指定String的每个格式说明符替换为相应对象的值的文本等效项每个实例都有的方法和属性每个实例都有的方法和属性Chars获取此实例中位于指定字符位置的字符。在C#中,该属性为String类的索引器。Clone返回对String类实例的引用CompareTo将当前字串同另一个字串进行比较。如果当前字串更小,返回一个负数;如相等,返回0;如更大,返回一个正数CopyTo将指定数目的字符从此实例中的指定位置复制到 Unicode 字符数组中的指定位置Equals比较两个字串,以确定它们是否包含相同的值。如果是则返回true,否则返回false表5.5 String类常用的字符串方法 http:/www.wenyuan.com.cn/webnew/5.3.1String类的字符串方法类的字符串方法方 法描 述IndexOf返回字串中第一次出现某个字符或字串索引(位置),如没有这样的字符或字串,则返回-1。Insert在实例中的指定索引位置插入一个指定的String类的实例。LastIndexOf返回字串中最后一次出现某个字符或字串的索引(位置),如没有这样的字符或字串,则返回-1。Length返回字串的长度,长度等于字串包含的字符数。PadLeft将字串右对齐,并在左边填充指定的字符(或空格)。PadRight将字串左对齐,并在右边填充指定的字符(或空格)。Remove从字串的指定位置开始删除指定数目的字符。续表 http:/www.wenyuan.com.cn/webnew/5.3.2StringBuilder类的字符串方法类的字符串方法n当我们调用字符串方法进行字符串的修改时,实际上将创建一个新的字符串,而存储在字符串中的某个字符是不能修改当我们调用字符串方法进行字符串的修改时,实际上将创建一个新的字符串,而存储在字符串中的某个字符是不能修改的。的。n例如:以下代码运行后字符串中的字符不能被修改。例如:以下代码运行后字符串中的字符不能被修改。nusingSystem;nclassStringErrornnpublicstaticvoidMain()nnstringstr=abcdefghijklmnop;n/字符串虽是由字符数组组成,但不能将其中第字符串虽是由字符数组组成,但不能将其中第6个字符改为个字符改为X,!,!nstr5=X;/程序运行会出错程序运行会出错nConsole.WriteLine(str);nnn程序运行后原字符串没有被修改,并且系统不正常退出。在实际应用中,使用表程序运行后原字符串没有被修改,并且系统不正常退出。在实际应用中,使用表5.5中列出的处理字符串的方法时,需要中列出的处理字符串的方法时,需要为处理后的新字符串另设一个空的存储空间为处理后的新字符串另设一个空的存储空间(即创建一个新的字符串对象即创建一个新的字符串对象)。例如,在本例中需要先将前。例如,在本例中需要先将前5个字符复制到个字符复制到另一个存储空间,然后输入第另一个存储空间,然后输入第6个字符,最后将从第个字符,最后将从第7个字符开始的字符串复制到后面。个字符开始的字符串复制到后面。n如果确实需要修改字符串,则应该使用如果确实需要修改字符串,则应该使用C#提供的提供的StringBuilder类。命名空间类。命名空间System.Text中的中的StringBuilder类用于类用于创建存储可修改字符串的对象。使用创建存储可修改字符串的对象。使用StringBuilder类创建的对象与用类创建的对象与用String类创建的字符串类似,差别在于后者创建类创建的字符串类似,差别在于后者创建的字符串不能被修改,当要修改或操纵字符串时,必须再另创建一个新的字符串对象。而的字符串不能被修改,当要修改或操纵字符串时,必须再另创建一个新的字符串对象。而StringBuilder类的对象包含类的对象包含的字符串信息可以被修改,该类的方法也可直接操纵字符串中存储的值。表的字符串信息可以被修改,该类的方法也可直接操纵字符串中存储的值。表5.6列出了列出了StringBuilder类的方法和属性。类的方法和属性。http:/www.wenyuan.com.cn/webnew/5.3.2StringBuilder类的字符串方法类的字符串方法方法或属性描 述Append(字符串)在StringBuilder类实例的结尾追加指定对象的字符串方法或属性描 述AppendFormat向StringBuilder类实例中追加包含零个或更多格式规范的格式化字符串Capacity属性获取或设置可包含在当前StringBuilder类实例所分配的内存中的最大字符数Chars属性获取或设置StringBuilder类实例中指定字符位置处的字符EnsureCapacity确保StringBuilder的容量至少是指定的值Equals返回一个值,该值指示StringBuilder类实例是否与指定对象相等Insert将指定对象的字符串表示形式插入到StringBuilder类实例中的指定字符位置Length设置或取得当前存储在StringBuilder类对象的长度值MaxCapacity取得StringBuilder类实例的最大容量Remove从当前实例的指定位置开始,删除指定数目的字符Replace将实例中所有指定的字符或字符串替换为其他的指定的字符或字符串ToString将StringBuilder转换为String的字符串表5.6 StringBuilder类的方法和属性 http:/www.wenyuan.com.cn/webnew/5.3.2StringBuilder类的字符串方法类的字符串方法n有关表有关表5.6中方法的参数和中方法的参数和StringBuilder类的其他方法可参见类的其他方法可参见MSDN文档。文档。n【例例5.9】使用使用StringBuilder类。类。nusingSystem;nusingSystem.Text;/为了引用为了引用StringBuilder类类nclassBuildNamennpublicstaticvoidMain()nnStringBuilderchgstr=newStringBuilder();/创建名为创建名为chgstr的的nStringBuilder对象对象nstringbuffer;/创建名为创建名为buffer的字符串用于取得用户输入的信息的字符串用于取得用户输入的信息nintmarker=0;nConsole.Write(请输入您的姓:请输入您的姓:);/读取读取姓姓nbuffer=Console.ReadLine();nif(buffer!=null)nnchgstr.Append(buffer);/将姓追加到将姓追加到StringBuilder类的对象类的对象chgstr中中nmarker=chgstr.Length;/将姓的长度赋给变量将姓的长度赋给变量marker,该变量被用来确定放,该变量被用来确定放n置置中名中名的位置的位置nhttp:/www.wenyuan.com.cn/webnew/5.3.2StringBuilder类的字符串方法类的字符串方法nConsole.Write(请输入您的姓名的最后一个字:请输入您的姓名的最后一个字:);/读读名名nbuffer=Console.ReadLine();nif(buffer!=null)nnchgstr.Append();/加一个空格加一个空格nchgstr.Append(buffer);/将将buffer中字符串追加到中字符串追加到chgstr中中nnConsole.Write(请输入您的中名:请输入您的中名:);/读读中名中名nbuffer=Console.ReadLine();nif(buffer!=null)nnchgstr.Insert(marker+1,buffer);/将中名插入将中名插入chgstr对象的中间对象的中间nchgstr.Insert(marker+buffer.Length+1,);/在在中名中名后插入空格后插入空格nnConsole.WriteLine(您的全名是:您的全名是:0,chgstr);/显示全名显示全名nConsole.WriteLine(您的全名长度:您的全名长度:0,chgstr.Length);n/输出输出chgstr对象当前存储的值的长度对象当前存储的值的长度nnn程序的输出结果:程序的输出结果:n请输入您的姓:刘请输入您的姓:刘(回车回车)n请输入您的姓名的最后一个字:南请输入您的姓名的最后一个字:南(回车回车)n请输入您的中名:泳请输入您的中名:泳n您的全名是:刘您的全名是:刘泳泳南南n您的全名长度:您的全名长度:5http:/www.wenyuan.com.cn/webnew/5.3.3Parse()方法方法n上节介绍的上节介绍的Format方法和方法和ToString方法,都是用来将数字转换为相应格式的字符串输出。而与这些方法相对应的方法,都是用来将数字转换为相应格式的字符串输出。而与这些方法相对应的Parse()方法则可以将字符串方法则可以将字符串转换为数值类型数据,且被转换的字串可以包含格式化数据,也可以是由数字字符组成的字串。转换为数值类型数据,且被转换的字串可以包含格式化数据,也可以是由数字字符组成的字串。n调用调用Parse()方法的常用格式:方法的常用格式:publicstatic数据类型数据类型.Parse(strings);n【例例5.10】数字和字串的相互转换。数字和字串的相互转换。nusingSystem;nusingSystem.Globalization;nclassEachothernnpublicstaticvoidMain()nninta;ndoubled;nstringstr;nstr=Console.ReadLine();/控制台输入整数数字字串控制台输入整数数字字串na=int.Parse(str);/将字串转换为整数将字串转换为整数nConsole.WriteLine(a+11111);nstr=Console.ReadLine();/控制台输入双精度数字字串控制台输入双精度数字字串nd=double.Parse(str);/将字串转换为双精度数将字串转换为双精度数nConsole.WriteLine(d+0.11);nnn程序运行结果:程序运行结果:n12345(回车回车)n23456n12345(回车回车)n12356http:/www.wenyuan.com.cn/webnew/5.3.4Convert类类n在实际应用中,使用在实际应用中,使用Read()和和ReadLine()方法读取数据的关键,不仅方法读取数据的关键,不仅仅是要取得信息,而是想将获得的信息转换为想要的格式。如对字符串仅是要取得信息,而是想将获得的信息转换为想要的格式。如对字符串中的文本进行过滤,得到一个不同的字符串,或将其转换为一种不同的中的文本进行过滤,得到一个不同的字符串,或将其转换为一种不同的数据类型。数据类型。nSystem命名空间中有一个用于将某个基本数据类型转换为另一个基本命名空间中有一个用于将某个基本数据类型转换为另一个基本数据类型的数据类型的Convert类。类。Convert类包含了大量的可将数据转换为不同类包含了大量的可将数据转换为不同的数据类型的静态方法,由于是静态方法,所以可直接使用以下语句格的数据类型的静态方法,由于是静态方法,所以可直接使用以下语句格式调用:式调用:nConvert.方法名方法名(原数据变量原数据变量);n其中:其中:l“方法方法”名是要使用的转换方法。表名是要使用的转换方法。表5.7列出了列出了Convert类转换数据类型类转换数据类型的一些方法。的一些方法。l“原数据变量原数据变量”是想要转换为新类型的数据变量。是想要转换为新类型的数据变量。http:/www.wenyuan.com.cn/webnew/5.3.3Parse()方法方法方 法 名描 述ToBoolean将指定的值转换为等效的布尔值ToByte将指定的值转换为 8 位无符号整数ToChar将指定的值转换为 Unicode 字符ToDateTime将指定的值转换为 DateTimeToDecimal将指定的值转换为 DecimalToDouble将指定的值转换为双精度数ToInt16将指定的值转换为 16位符号整数ToInt32将指定的值转换为 32位符号整数ToInt64将指定的值转换为 64位符号整数ToSbyte将指定的值转换为 8位符号整数ToSingle将指定的值转换为单精度浮点数ToString将指定的值转换为字符串表5.7 Convert类转换数据类型的方法 http:/www.wenyuan.com.cn/webnew/5.3.3Parse()方法方法n使用使用Convert类的前提条件是用类的前提条件是用using语句引用命名空间语句引用命名空间System.Text。Convert类位于基类库中,所以可在其他编程语言中使用这个类。注意,类位于基类库中,所以可在其他编程语言中使用这个类。注意,Convert类的方法将数据转换为基数据类型,而不是类的方法将数据转换为基数据类型,而不是C#数据类型,但我们知道每种数据类型,但我们知道每种C#数据类型都有相应的基类型。数据类型都有相应的基类型。n有关方法的参数和有关方法的参数和Conver类的其他方法可参见类的其他方法可参见MSDN文档。文档。n【例例5.11】使用使用Convert类的方法,将读取的字符串转换为一个整数。类的方法,将读取的字符串转换为一个整数。nusingSystem;nusingSystem.Text;/为了使用为了使用Convert类类nclassUseConvertnnpublicstaticvoidMain()nnstringbuff;nintage;nConsole.Write(请输入您的年龄:请输入您的年龄:);nbuff=Console.ReadLine();ntry/捕获异常捕获异常nnage=Convert.ToInt32(buff);/将输入的年龄字串转换为将输入的年龄字串转换为32位整数位整数nif(ageUseConvertn请输入您的年龄:请输入您的年龄:19n你不到你不到21岁。岁。n后年你的年龄是:后年你的年龄是:21nd:UseConvertn请输入您的年龄:请输入您的年龄:40n你是你是21岁或已超过岁或已超过21岁。岁。n后年你的年龄是:后年你的年龄是:42nd:UseConvertn请输入您的年龄:请输入您的年龄:99999999999nyouenteredanumberthatistoobigortoosmall.nd:UseConvertn请输入您的年龄:请输入您的年龄:abcnyoudidntenteravalidnumberhttp:/www.wenyuan.com.cn/webnew/Q & A?Thanks!
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号