




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、让IT教学更简单,让IT学习更有效让IT教学更简单,让IT学习更有效第七章 C#常用类字符串string类StringBuilder类日期处理让IT教学更简单,让IT学习更有效 目录7.17.1字符串基本特征7.27.2String类的常用方法7.37.3高效的StringBuilder7.47.4日期处理7.57.5Random类让IT教学更简单,让IT学习更有效7.1 字符串基本特征字符串的最大特性就是不可变性,即字符串对象一旦创建,就无法对其进行修改。 7.1.1 字符串的不可变性字符串的不可变性例如例如有一个字符串“abc”,如果对其进行修改,其内存就会发生的变化,具体如下图所示。让I
2、T教学更简单,让IT学习更有效7.1 字符串基本特征在程序开发中,为了方便访问字符串中的某个字符,可以将字符串看做一个char类型的数组,即字符数组。接下来通过一个具体的案例来演示如何访问字符串中的某个字符,具体如下: 7.1.2 字符串与字符数组字符串与字符数组 class Program01 static void Main(string args) string str = 欢迎来到传智播客欢迎来到传智播客.NET世界世界; Console.WriteLine(str0); Console.WriteLine(str5); Console.WriteLine(str13); Consol
3、e.ReadKey(); 让IT教学更简单,让IT学习更有效7.1 字符串基本特征同字符数组类似,字符串也是通过Length属性来获取长度的,接下来通过一个案例来实现对字符串的遍历,如下所示。 7.1.2 字符串与字符数组字符串与字符数组 class Program02 static void Main(string args) string str = 欢迎来到传智播客.NET世界; for (int i = 0; i str.Length; i+) Console.WriteLine(stri); Console.ReadKey(); 让IT教学更简单,让IT学习更有效7.2 string
4、类的常用方法在操作String类之前,首先需要对String类进行初始化。String类中有很多重载的构造方法,具体如下表所示。 7.2.1 string类的构造方法类的构造方法方法名称方法名称功能描述功能描述S t r i n g ( C h a r charArray)将String类的新实例初始化为由Unicode字符数组指示的值。String(Char ch,int num)将String类的新实例初始化为由重复指定次数的指定Unicode 字符指示的值。让IT教学更简单,让IT学习更有效7.2 string类的常用方法 7.2.1 string类的构造方法类的构造方法注意:注意:在程
5、序中,String和string 都可以创建字符串对象。不同的是,string类型是C#语言中用来表示字符串的类型,而String类型是.NET Framework 通用类型系统中用来表示字符串的类型。在程序开发过程中,这两种类型之所以都能表示字符串,是因为程序编译时,C#语言中的string类型会被编译成.NET Framework通用类型系统的String类型。让IT教学更简单,让IT学习更有效7.2 string类的常用方法在程序开发中,经常需要在不实例化字符串的情况下来实现某些功能,比如判断字符串是否为空、格式化字符串。为此String类中提供了许多静态方法,具体如下: 7.2.2 s
6、tring类的静态方法类的静态方法1、Compare()方法方法Compare()方法用于比较两个字符串是否相等,该方法有两个string类型参数,用于接收进行对比的字符串,如果第一个字符串大于第二个字符串,则返回一个大于0的int整数;如果两个字符串相同,则返回0;若第一个字符串小于第二个字符串,则返回一个小于0的int整数。让IT教学更简单,让IT学习更有效7.2 string类的常用方法 7.2.2 string类的静态方法类的静态方法2、Format()方法方法Format()方法的作用是格式化字符串,它的用法与Console.WriteLine()非常类似,不同的是Format()方
7、法是通过占位符“0、1”的形式返回一个拼接的字符串。IsNullOrEmpty()方法用来判断字符串是否为空或长度是否为0,当字符串为空或者长度为0时,返回值为true,否则返回false。3、IsNullOrEmpty()方法方法让IT教学更简单,让IT学习更有效7.2 string类的常用方法 7.2.2 string类的静态方法类的静态方法4、Join()方法方法Join()方法的作用是使用指定的字符或字符串,将字符串数组中的元素连接起来。让IT教学更简单,让IT学习更有效7.2 string类的常用方法 7.2.3 string类的实例方法类的实例方法除静态方法外,String类中还提
8、供了一些方法,这些方法需要先创建实例对象才能被调用,即String类的实例方法,具体如下表所示。方法声明方法声明功能描述功能描述bool Contains(string str)判断当前字符串中是否包含指定字符串bool EndsWith(string str)判断当前字符串是否使用指定字符串结尾int IndexOf(char ch)获得指定字符或字符串在当前字符串中的位置string Split(char charArray)将字符串以某种字符分隔string Substring(int index,int subLength)截取当前字符串中的一部分char ToCharArray()将
9、当前字符串转换为字符数组string ToUpper()将当前字符串中的英文转化成大写string Trim()去除字符串两边空格让IT教学更简单,让IT学习更有效7.2 string类的常用方法 7.2.3 string类的实例方法类的实例方法1、Contains()方法方法Contains()方法用于判断一个字符串中是否包含指定字符串,例如下面的案例,就演示了Contains()方法的使用。 class Program08 static void Main(string args) string str1 = 这是一个测试字符串; string str2 = 测试; if (str1.Co
10、ntains(str2) Console.WriteLine(str2包含在str1中); else Console.WriteLine(str1不包含str2); Console.ReadKey(); 让IT教学更简单,让IT学习更有效7.2 string类的常用方法 7.2.3 string类的实例方法类的实例方法2、EndsWith()方法方法EndsWith()方法的作用是判断当前字符串是否以指定字符串结尾,例如下面的案例,就演示了EndsWith()方法的使用。 class Program09 static void Main(string args) Console.WriteLi
11、ne(请输入mp3文件名); string input = Console.ReadLine(); /接收用户从控制台输入的字符串 if (input.EndsWith(.mp3) Console.WriteLine(文件格式正确); else Console.WriteLine(输入文件不是mp3格式); Console.ReadKey(); 让IT教学更简单,让IT学习更有效7.2 string类的常用方法 7.2.3 string类的实例方法类的实例方法3、IndexOf()方法方法IndexOf()方法用于返回指定字符或字符串在字符串中的索引,在查找过程中,从字符串左边开始查找,如果找
12、到第一个,便返回对应的索引且方法结束,否则返回-1。例如下面的案例,就演示了IndexOf()方法的使用。 class Program10 static void Main(string args) string str = abcdefefghefg; /查找第一个e字符的位置 int index = str.IndexOf(e); Console.WriteLine(找到e,索引为0, index); Console.ReadKey(); 让IT教学更简单,让IT学习更有效7.2 string类的常用方法 7.2.3 string类的实例方法类的实例方法4、Split()方法方法Split
13、()方法专门用来分隔字符串。例如下面的案例,就演示了Split()方法的使用。 class Program11 static void Main(string args) string str = I have a dream; string strs = str.Split( ); Console.WriteLine(一共有0个单词,分别是:, strs.Length); for (int i = 0; i strs.Length; i+) Console.WriteLine(第0个单词是:1, i + 1, strsi); 让IT教学更简单,让IT学习更有效7.2 string类的常用方法
14、 7.2.3 string类的实例方法类的实例方法5、Substring()方法方法Substring()方法的作用是对字符串进行截取。例如下面的案例,就是演示了Substring()方法的使用。 class Program12 static void Main(string args) / 注意C#中的转义字符,这里加上取消转义 string path = D:itcastchapter7program12.cs; int index = path.IndexOf(.); / 从.的下一个位置开始截取 string fileType = path.Substring(index + 1);
15、Console.WriteLine(文件后缀名为:0, fileType); Console.ReadKey(); 让IT教学更简单,让IT学习更有效7.2 string类的常用方法 7.2.3 string类的实例方法类的实例方法6、ToCharArray()方法方法ToCharArray()方法的作用是将字符串转换成一个字符数组,例如下面的案例,就演示了ToCharArray()方法的使用。class Program13 static void Main(string args) string s = abcdef; string s1=ReverseString(s);/调用翻转字符串的
16、方法 Console.WriteLine(s1); Console.ReadKey(); /定义让字符串反转的方法 public static string ReverseString(string str) /将字符串转换成字符数组 char chs = str.ToCharArray(); for (int i = 0; i chs.Length / 2; i+) char temp = chsi; chsi = chschs.Length - i - 1; chschs.Length - i - 1 = temp; return new string(chs); 让IT教学更简单,让IT
17、学习更有效7.2 string类的常用方法 7.2.3 string类的实例方法类的实例方法7、ToUpper()方法方法ToUpper()方法的作用是将字符串中所有的英文字母都变成大写的,例如下面的案例,就演示了ToUpper()方法的使用。 class Program14 static void Main(string args) string s = itcast; s = s.ToUpper(); Console.WriteLine(s); Console.ReadKey(); 让IT教学更简单,让IT学习更有效7.2 string类的常用方法 7.2.3 string类的实例方法类的
18、实例方法8、Trim()方法方法Trim()方法的作用是用来去除字符串两端的空格。例如下面的案例,就演示了Trim()方法的使用。 class Program15 static void Main(string args) string str = ab cd ; Console.WriteLine(|+str+|); str = str.Trim(); Console.WriteLine(| + str + |); Console.ReadKey(); 让IT教学更简单,让IT学习更有效7.3 高效的StringBuilder 7.3.1 StirngBuilder类类在程序开发中,经常会使
19、用大量的字符串,由于字符串是不可变的,因此在代码中频繁的拼接字符串会创建多余的对象,从而影响程序的性能。为了解决这个问题,C#中提供了StringBuilder类,它和String类都用来操作字符串。与String类不同的是,StringBuilder类创建的字符串的长度是可以改变的,它类似一个字符容器,当在其中添加或删除字符时,并不会产生新的StringBuilder对象,因此可以让字符串的拼接操作变的更加高效。让IT教学更简单,让IT学习更有效7.3 高效的StringBuilder 7.3.1 StirngBuilder类类针对添加和删除字符的操作,StringBuilder类提供了一系
20、列的方法,具体如下表所示。方法声明方法声明功能描述功能描述stringBuilder Append(string str)将字符串添加到StringBuilder对象的末尾stringBuilder Insert(int offset ,string str)将字符串中的offset位置插入字符串strstringBuilder Replace(string str1,string str2)在StringBuilder对象中替换指定的字符或字符串序列stringBuilder Remove(int index,int length)将字符串从指定的索引位置开始length长度个字符串删除st
21、ring ToString()将StringBuilder类型转换成string 类型让IT教学更简单,让IT学习更有效7.3 高效的StringBuilder 7.3.2 StringBuilder性能分析性能分析 通过前面的讲解可知String字符串创建之后是不可以改变的,而StringBuilder字符串是可以进行改变,接下来就针对这两个字符串的性能进行分析。 在分析两个字符串的性能之前首先需要介绍一个类Stopwatch,该类属于System.Diagnostics命名空间,用于记录程序执行的时间,它有两个方法Start()和Stop(),其中Start()方法表示计时开始,Stop(
22、)方法表示计时结束,该类还有一个属性Elapsed用于打印记录的时间。让IT教学更简单,让IT学习更有效7.4 日期处理 7.4.0 结构体结构体 C#中结构类型和类类型在语法上非常相似,他们都是一种数据类型,都可以包括数据成员和方法成员。 结构和类的区别:1、结构是值类型,它在栈中分配空间;而类是引用类型,它在堆中分配空间,栈中保存的只是引用。2、结构类型直接存储成员数据,让其他类的数据位于对中,位于栈中的变量保存的是指向堆中数据对象的引用。 C#中的简单类型,如int、double、bool等都是结构类型。 由于结构是值类型,并且直接存储数据,因此在一个对象的主要成员为数据且数据量不大的情
23、况下,使用结构会带来更好的性能。让IT教学更简单,让IT学习更有效7.4 日期处理 7.4.0 结构体结构体 声明结构的语法 - struct关键字 public struct AddressBook /字段、属性、方法、事件 对于类而言,两个变量指向同一个对象的情况是存在的,因此对这样两个变量中的任意一个进行操作,其结果必然会影响另外一个,因为它们指向的是同一个对象。 结构是值类型,直接包含它自己的数据,每个结构都保存自己的一份数据,修改每一个结构的数据都不会对其他结构的数据造成影响 由于结构不是引用类型,因此结构类型的变量不能被赋予null值。让IT教学更简单,让IT学习更有效7.4 日期
24、处理 7.4.0 结构体结构体 构造函数结构类型可以有实例构造函数和静态构造函数,但不能有析构函数。 实例构造函数结构类型都有一个预定义的,没有参数的构造函数,这点与类是一样的。此构造函数不允许删除和重定义,并且这个无参数的构造函数会一直存在,并不会因为定义了其他带参数的构造函数就消失,这一点和类不同。 注意如果没有使用new运算符,是不可以使用数据成员的值(除非已显示地设置了该数据成员的值)和调用函数成员的(除非所有数据成员均已经被赋值)。让IT教学更简单,让IT学习更有效7.4 日期处理 7.4.0 结构体结构体 结构的多态和可继承性结构直接派生自System.ValueType,间接派生
25、自System.Object,但结构是隐式密封的,不能作为基类在派生出其他的结构,也不能从类派生,但可以从接口派生。 结构的特性:1、结构类型总是隐式密封的,因此在定义结构时不能使用sealed和abstract关键字; 2、因为结构不能作为基类,结构的成员不能使用如下访问修饰符:protected和protected internal; 3、结构的函数成员不能声明为abstract和virtual,但是可以使用override关键字,用以覆写它的基类System.ValueType中的方法。让IT教学更简单,让IT学习更有效7.4 日期处理 7.4.0 结构体结构体 结构的装箱与拆箱结构是值
26、类型,因此当它被转换为object类型时,或者它所实现的接口类型的时候,就会执行装箱操作;同样,当执行相反操作的时候,就会执行拆箱操作。让IT教学更简单,让IT学习更有效7.4 日期处理 7.4.0 结构体结构体 结构和类的对比 结构 类数据类型 值类型引用类型是否必须使用new运算符实例化否是是否可声明无参数的构造函数否是数据成员可否在声明的同时初始化声明为const或static可以,数据成员不可以 可以直接派生自什么类型System.ValueType 有是否有析构函数无有可否从类派生否可以可否实现接口可以可以实例化时在栈还是在堆分配内存栈堆,栈中保存引用该类型的变量可否被赋值为null
27、 否可以可否定义私有的无参构造函数否可以是否总有一个默认的无参构造函数 是否 无论结构使用预定义的、无参数的构造函数,还是使用用户定义的、有参数的构造函数进行初始化,都会初始化结构的数据成员。不过预定义的,无参的会将数值型初始化为默认值,引用类型初始化为null;而用户自定义的初始化策略对个成员进行初始化。因此结构类型的数据成员不允许在声明是显式初始化。让IT教学更简单,让IT学习更有效7.4 日期处理 7.4.0 结构体结构体 性能因为结构是值类型,因此在为结构分配内存,或者当结构超出了作用域被删除时,性能会非常好,因为他们将内联或者保存在堆栈中。当把一个结构类型的变量赋值给另一个结构时,对
28、性能的影响取决于结构的大小,如果结构的数据成员非常多而且复杂,就会造成损失。 结构和类的适用场合分析:1、当堆栈的空间很有限,且有大量的逻辑对象时,创建类要比创建结构好一些;2、对于点、矩形和颜色这样的轻量对象,假如要声明一个含有许多个颜色对象的数组,则CLR需要为每个对象分配内存,在这种情况下,使用结构的成本较低;3、在表现抽象和多级别的对象层次时,类是最好的选择,因为结构不支持继承。4、大多数情况下,目标类型只是含有一些数据,或者以数据为主。让IT教学更简单,让IT学习更有效7.4 日期处理 7.4.1 DateTime结构体结构体 在程序开发中,需要对日期进行处理,例如向系统录入数据时,
29、需要记录当前时间。为此C#中提供了一个表示时间的类DateTime。 在操作DateTime类之前,首先使用构造方法对DateTime类进行初始化。DateTime类有很多重载的构造方法,下表列举了两个最常用的构造方法。名称名称功能描述功能描述DateTime(int year, int month, int day)将 DateTime 结构的新实例初始化为指定的年、月和日。DateTime(int year, int month, int day, int hour, int minute, int second)将 DateTime 结构的新实例初始化为指定的年、月、日、小时、分钟和秒让
30、IT教学更简单,让IT学习更有效7.4 日期处理 7.4.2 DateTime类的常用属性类的常用属性在日期数据处理的过程中,经常需要通过DateTime对象的属性来获取日期中的某一部分的信息,下表列举了一些DataTime类的常用的属性。名称名称功能描述功能描述Date获取此实例的日期部分Day获取此实例所表示的日期为该月中的第几天Hour获取此实例所表示日期的小时部分Minute获取此实例所表示日期的分钟部分Month获取此实例所表示日期的月份部分Today获取当前日期Year获取此实例所表示日期的年份部分Now获取一个 DateTime 对象,该对象设置为此计算机上的当前日期和时间,表示为本地时间。让IT教学更简单,让IT学习更有效7.4 日期处理 7.4.3 DateTime的常用方法的常用方法在程序开发中,经常需要对日期进行处理,比如比较两个日期是否相等、对日期进行修改等。针对日期的处理,DateTime类提供了一些常用方法,具体如下表所示。名称名称功能描
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论