字符串、集合和泛型.ppt
《字符串、集合和泛型.ppt》由会员分享,可在线阅读,更多相关《字符串、集合和泛型.ppt(52页珍藏版)》请在三一办公上搜索。
1、1,第五章 字符串、集合和泛型,5.1 字符串5.2 集合和泛型 5.3 小结,5.1 字符串,类类,5.1 字符串,在C#语言中,String是.NET Framework 中System.String的别名,System.String类型表示的是Unicode字符的字符串。,String类,任何应用程序中使用最频繁的类型无疑是System.String类型。一个String类型表示一个恒定不变的字符序列集合。String类型直接继承自Object,这使得它成为一个引用类型。此外,String类还实现了字符串的一些基本操作,如字符串和其他数据类型的转换,字符串的格式化,字符串(字符)大小写的
2、转换,字符串比较,字符串的剪裁和填充,字符串的拆分和连接。下面分类介绍了String类实现这些操作的方法:,String类,1.字符串分析(Parse)Parse方法把表示.NET Framework 数字基类型的字符串转换成实际的.NET Framework 数字基类型。Parse方法最多能接受3个参数:要转换的字符串;枚举中的一个或多个值;NumberFormatInfo类。因为Parse方法假设所有的字符串输入都是表示十进制的值,所以不能解析非十进制的值。Parse方法同样也不能解析那些表示NaN(非数字)、Single和Double类的PositiveInfinity或Negative
3、Infinity值的字符串,因为它们都不是真正的数字。,String类,【例5.1】把一个字符串转换成一个int类型的值,对该数值执行递增操作,并显示输出结果。/Parse:把字符串转换成数字string sr=12345;int a=int.Parse(sr);a+;Response.Write(parse:+Convert.ToString(a)+);,String类,2.格式化.NET Framework 提供了许多格式字符串和说明符,可以用它们来格式化从其他对象派生而来的字符串的外观。在向用户显示基本数据类型的值之前,把它们转换成字符串类型有许多好处:字符串容易显示,而且可以将它们添加
4、到应用程序的对话框和消息框中;也可以使用格式说明符将同一数值以科学计数法格式、货币格式、十六进制格式或其他格式显示出来。,String类,1)何时使用格式字符串对于应用程序存储信息的格式,当它被应用程序所使用时,可以使用格式说明符。例如,一个商务应用程序可能在DateTime对象中保存当前的时间和日期,以便在交易结束时进行记录。DateTime对象存储了一些用户没有必要关心的信息,如从创建对象起用了多少毫秒,可以使用格式说明符来显示用户关心的信息,如交易的日期和时间。另外,还可以动态地修改由格式说明符创建的字符串,来表示当前区域的货币、日期和时间。例如,应用程序可以使用用户当前区域特有的符号来
5、显示日期和时间。,String类,2)使用格式字符串的方法任何能够创建字符串的方法都可以使用格式字符串,所创建的字符串可以代表.NET Framework 中的某种数据类型,如Int32、Int64、Single、Double、Enumeration和DateTime等。格式字符串还可以用于Console.WriteLine方法、String.Format方法以及System.IO命名空间中的一些方法。另外,每个基本数据类型都包含一个ToString方法,这个方法返回一个该数据类型值的字符串表示形式,并可接受一个字符串格式说明符作为参数。可以使用.NET Framework 中定义的几个格式字
6、符串中的一个来控制上面那些创建的字符串的布局和设计。,String类,3)使用ToString方法当要把标准的.NET Framework 数据类型转换成字符串(以其他形式表示该类型)时,ToString方法将非常有用。如果有一个整数100,想把它表示成货币的形式呈现给用户,使用ToString方法和货币格式字符串(C)就可以很容易地生成字符串$100.00。该数据类型的原始值并不会被转换,只是返回一个代表结果的新字符串。除非将这个新的字符串转换为原来的.NET 基本数据类型,否则它不能用于计算。而该数据类型的原始值在任何时候都能参与计算。,String类,【例5.2】ToString方法将数
7、值100以货币格式的字符串形式显示在页面窗口中。/ToString:把framework中的标准数据类型转换成字符串int i=10;string j=i.ToString(c);/c表示货币格式字符串Response.Write(格式化+j+);DateTime d=new DateTime(2006,9,23,10,20,30);/格式化日期,分别以短日期和长日期的形式显示string t=d.ToString(d);Response.Write(短日期+t+);string t1=d.ToString(f);Response.Write(长日期+t1+);,String类,3.改变大小写
8、String.ToUpper和String.ToLower方法提供了接受区域性参数的重写方法。String.ToUpper方法把字符串中所有字符转换成大写形式,String.ToLower方法是把字符串中所有字符转换成小写形式。【例5.3】大小写转换实例。string da=HelloWorld;Response.Write(转换成大写+da.ToUpper()+);/大小写转换Response.Write(转换成小写+da.ToLower()+);,String类,4.字符串比较.NET Framework 提供了几个方法来比较字符串的值。表5.1描述了一些比较字符串值的方法。表5.1 字符
9、串比较,String类,例如,String.Compare方法提供了全面的方法来比较当前字符串对象和另一个字符串对象。可以用这个方法来比较两个字符串或它们的子串。另外,还提供了考虑或忽略大小写规则和区域性差异的重载方法。表5.2 字符串比较返回结果,String类,【例5.4】使用Compare方法来判断两个字符串是否相同。int ii=String.Compare(t,t1);/compare用于比较两个字符串的值,返回一个整型值Response.Write(字符串比较+Convert.ToString(ii)+);5.Trim 和Pad当需要移除或添加字符串首尾的空格时,System.St
10、ring类提供了剪裁和填充字符串的方法。,String类,1)剪裁如果将句子解析成独立的单词,可能在单词的首尾都有空格,可以使用System.String类的Trim方法移除该字符串首尾的任意数量的空格。表5.3 描述了两个可用的剪裁方法。表5.3 字符串剪裁,String类,【例5.5】使用String.Trim方法可以很容易地移除字符串首尾的空格,如下所示:/trim的用法string aa=hello;Response.Write(Trim:+aa.Trim()+);/remove:从字符串指定索引位置移除指定数目的字符string b=12345;Response.Write(remo
11、ve:+b.Remove(2,3)+);,String类,2)填充System.String也提供了为现有字符串创建新版本的方法,它是通过扩展一定数量的字符实现的。表5.4描述了可用的填充方法。表5.4 字符串填充方法,String类,【例5.6】String.PadLeft方法创建一个新的字符串,该方法把字符串向右移动,使该字符串从第一个字符到最后一个字符的长度正好为指定的数目。如果没有使用重写方法来指定自定义填充字符时,那么就会插入空格。/padleft右对齐并左填充,此程序中字符串总长度为5string c=hello;Response.Write(padleft:+c.PadLeft(
12、10,-)+);,String类,6.Split和JoinSystem.String类提供了用来拆分字符串的Split方法以及用来连接字符串的Join方法。1)Split方法Split方法把字符串实例分解成由其子串组成的字符串数组,分解的位置由分隔符指定。若不指定分隔符,即参数为null时,则假定分隔符为空格。如果分隔符字符串是一个零长度的字符串,那么将返回包含该字符串整个表达式的单元素数组。【例5.7】拆分字符串实例。/split:将字符串拆分成字符串数组,分解位置由分隔符指定string dd=hello world;string f=dd.Split(null);/分隔符是null,即空
13、格Response.Write(拆分字符串:+f1+);,String类,2)Join方法Join方法用指定的分隔符把特定的String数组的各元素连接起来,产生单个连接的字符串。如果不指定分隔符,也就是说分隔符为null时,那么就使用空白字符(”)作为分隔符。如果分隔符是零长度的字符串(”),那么数组中的所有元素不使用分隔符直接连接在一起。,StringBuilder 类,String对象是不可变的,因此,每次使用System.String类中的方法时,都将创建新的字符串对象。当反复修改字符串时,创建新的String对象带来的开销将会非常大。可供选择的方法是使用类来修改字符串,这样可以避免创
14、建新的字符串对象。,StringBuilder 类,1.创建StringBuilder对象通过使用一个重载的StringBuilder类的构造函数来初始化变量,就可以创建该类的一个新实例,正如下面的代码示例所阐释的那样。StringBuilder s=new StringBuilder(hello);尽管StringBuilder对象是一个动态对象,允许向其所封装的字符串中添加字符,但是也可以指定其所包含的字符数目的最大值。这个值称为StrngBuilder对象的容量。注意:不要将它与当前StringBuilder对象容纳的字符串长度相混淆。任何扩展StringBuilder对象的长度而使其超
15、出了该对象最大范围的行为,都会引发ArgumengOutOfRangeException异常。,StringBuilder 类,2.StringBuilder方法表5.5描述了可以用来修改StirngBuilder对象内容的一些方法。表 5.5 StirngBuilder对象内容修改,StringBuilder 类,【例5.8】StringBuilder.Append和StringBuilder.Insert的使用方法示例。/StringBuilder类的用法s.Append(!);Response.Write(s+);s.Insert(2,-);/在第2个字符处插入一字符串Response.
16、Write(s);,5.2 集合和泛型,5.2.1 集合和集合接口5.2.2 使用主要集合类型 5.2.3 使用泛型集合5.2.4 使用专用集合,5.2 集合和泛型,通过使用集合,可以将许多对象存储在一个对象中。.NET Framework 2.0引入了泛型集合和集合基类。这些新的集合类提供了增强的功能,因此可以更高效地使用它们来创建自己的集合类型。,集合和集合接口,假设正在开发一个雇员跟踪应用程序。这个应用程序使用一个名为Employee的数据结构来存储雇员信息;然而,并不能预知需要的记录数目。虽然可以将该数据结构存储在数组中,但是如果这样做,就需要编写代码来处理添加新员工的情况:首先,需要
17、创建一个新数组,该数组需要具有容纳附加元素的空间;然后,需要将元素从原始数组复制到新数组并添加新元素。要简化这个过程,.NET Framework 提供了一组类,这些类就是集合。集合是指通过高度结构化的方式存储任意对象的类。与无法动态调整大小的数组相比,集合不仅能随意调整大小,而且对存储和检索存储在其中的对象提供了更高级的方法。通常可以在.NET Framework 的System.Collections命名空间中找到通用的集合;.NET Framework 2.0 引入了泛型集合,通过泛型集合可以重用相同的代码。,集合和集合接口,每个集合接口中都定义了不同的行为。例如,Ilist接口使集合的
18、行为类似列表并对其进行索引,IDictionary接口使集合行为类似字典,其中的项可通过键来检索。每个集合类(非泛型或泛型)都实现了一个或多个集合接口。还可以在自定义的集合类中实现一个或多个集合接口,以支持特殊需要。下面描述了各种集合接口的非泛型和泛型版本。这些接口的非泛型版本位于System.Collections命名空间,泛型版本位于命名空间。,集合和集合接口,1.IComparable使用IComparable接口来比较两个对象并确定哪个对象较大。IComparable接口的CompareTo方法接受一个对象作为参数。如果当前对象的值大于、等于或小于参数对象的值,则该方法分别返回1、0、
19、-1。因为IComparable接口的泛型版本所能接受的参数是.NET所能接受的特定类型的,故该接口保证了类型安全。,集合和集合接口,2.ICollectionICollection接口定义所有非泛型和泛型集合的大小、枚举数和同步方法。该接口的非泛型版本提供了AddAt、AddItem、GetEnumerator和Item方法,使用这些方法可以分别执行以下操作:将声明为System.Object的项添加到特定位置、将项添加到集合结尾、对集合进行枚举以及使用集合中的某个项。ICollection接口的非泛型版本还提供IsReadOnly和Count属性,指示集合是否为只读以及返回包含在集合中的元
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 字符串 集合
链接地址:https://www.31ppt.com/p-6564307.html