C#常用数据结构与算法.ppt
《C#常用数据结构与算法.ppt》由会员分享,可在线阅读,更多相关《C#常用数据结构与算法.ppt(147页珍藏版)》请在三一办公上搜索。
1、第7章 常用数据结构与算法,数据结构和算法是程序设计的基石。本章重点讲述C#中的几个主要的数据结构类型:字符串、数组和枚举。本章还将介绍一些常用算法,如几种典型排序算法的C#实现。,2023/3/16,2,7.1 字符串,字符串是应用程序和用户交互的主要方式之一。.NET提供了几个类来快速实现字符串操作,包括String、StringBuilder等。,2023/3/16,3,7.1.1 静态字符串String,System.String是最常用的字符串操作类。下面从各个应用的角度对String类进行详细的介绍。1.比较字符串比较字符串是指按照字典排序规则,判定两个字符的相对大小。在Strin
2、g类中,常用的比较字符串的方法包括Compare、CompareTo、CompareOrdinal以及Equals。,2023/3/16,4,串的基本概念,空串:不含任何字符的串称为空串空格串:由一个或多个空格组成的串,称为空格串。串相等:是指两个串的长度相等且对应的字符相等。模式匹配:确定子串在主串中首次出现位置的运算。子串:串中任意个连续的字符组成的子序列称为该 串的子串。主串:包含子串的串称为该子串的主串。,7.1.1 静态字符串String,(1)Compare方法 Compare方法是String类的静态方法,用于全面比较两个字符串对象。下面使用Compare方法来比较两个字符串,输
3、出结果如注释语句所示。/定义两个String对象,并对其赋值 System.String strA=Hello;System.String strB=World;,2023/3/16,7,C#程序设计实用教程,7.1.1 静态字符串String,/Compare Console.WriteLine(String.Compare(strA,strB);/-1 Console.WriteLine(String.Compare(strA,strA);/0 Console.WriteLine(String.Compare(strB,strA);/1,2023/3/16,8,C#程序设计实用教程,7.1
4、.1 静态字符串String,(2)CompareTo方法 CompareTo方法将当前字符串对象与另一个对象做比较,其作用与Compare类似,返回值也相同。CompareTo与Compare相比,区别在于:CompareTo不是静态方法,可以通过一个String对象调用;CompareTo没有重载形式,只能按照大小写敏感方式比较两个整串。,2023/3/16,9,C#程序设计实用教程,7.1.1 静态字符串String,CompareTo方法的使用如下代码所示:/定义两个String对象,并对其赋值 System.String strA=Hello;System.String strB=W
5、orld;/CompareTo Console.WriteLine(strA.CompareTo(strB);/-1,2023/3/16,10,C#程序设计实用教程,7.1.1 静态字符串String,(3)Equals方法 Equals方法用于方便地判定两个字符串是否相同,有两种重载形式:public bool Equals(string)public static bool Equals(string,string)如果两个字符串相等,Equals()返回值为True;否则,返回False。Equals方法的使用如下代码所示:/Equals Console.WriteLine(String
6、.Equals(strA,strB);/false Console.WriteLine(strA.Equals(strB);/false,2023/3/16,11,C#程序设计实用教程,7.1.1 静态字符串String,(4)比较运算符 String支持两个比较运算符“=”、“!=”,分别用于判定两个字符是否相等和不等,并区分大小写。下例中,使用“=”、“!=”对“Hello”和“World”进行比较。/=和!=Console.WriteLine(strA=strB);/false Console.WriteLine(strA!=strB);/true,2023/3/16,12,C#程序设计
7、实用教程,7.1.1 静态字符串String,2.定位字符和子串定位子串是指在一个字符串寻找其中包含的子串或者某个字符,在String类中,常用的定位子串和字符的方法包括StartWith/EndsWith、IndexOf/LastIndexOf以及IndexOfAny/LastIndexOf。,2023/3/16,13,C#程序设计实用教程,7.1.1 静态字符串String,(1)StartWith/EndsWith方法 StartWith方法可以判定一个字符串对象是否以另一个子字符串开头,如果是返回True;否则返回False。其定义为:public bool StartsWith(st
8、ring value)其中,参数value即待判定的子字符串。/StartWith Console.WriteLine(strA.StartsWith(He);/true Console.WriteLine(strA.StartsWith(She);/false另外,EndsWith方法可以判定一个字符是否以另一个子字符串结尾。,2023/3/16,14,C#程序设计实用教程,7.1.1 静态字符串String,(2)IndexOf/LastIndexOf方法 IndexOf方法用于搜索一个字符串,某个特定的字符或子串第一次出现的位置,该方法区分大小写,并从字符串的首字符开始以计数。如果字符串
9、中不包含这个字符或子串,则返回-1。定位字符:int IndexOf(char value)int IndexOf(char value,int startIndex)int IndexOf(char value,int startIndex,int count),2023/3/16,15,C#程序设计实用教程,7.1.1 静态字符串String,定位子串:int IndexOf(string value)int IndexOf(string value,int startIndex)int IndexOf(string value,int startIndex,int count)在上述重载
10、形式中,其参数含义如下:Value:待定位的字符或者子串。startIndex:在总串中开始搜索的起始位置。Count:在总串中从起始位置开始搜索的字符数。,2023/3/16,16,C#程序设计实用教程,7.1.1 静态字符串String,下例在“Hello”中寻找字符“l”第一次出现的位置。/Indexof Console.WriteLine(strA.IndexOf(l);/2 同IndexOf类似,LastIndexOf用于搜索在一个字符串中,某个特定的字符或子串最后一次出现的位置,其方法定义和返回值都与IndexOf相同。,2023/3/16,17,C#程序设计实用教程,7.1.1
11、静态字符串String,(3)IndexOfAny/LastIndexOfAny IndexOfAny方法功能同IndexOf类似,区别在于,可以搜索在一个字符串中,出现在一个字符数组中的任意字符第一次出现的位置。,2023/3/16,18,C#程序设计实用教程,7.1.1 静态字符串String,下例在“Hello”中寻找字符“l”第一次和最后一次出现的位置。/IndexofAny|LastIndexOfAny char anyOf=H,e,l;Console.WriteLine(strA.IndexOfAny(anyOf);/0 Console.WriteLine(strA.LastInd
12、exOfAny(anyOf);/3 同IndexOfAny类似,LastIndexOfAny用于搜索在一个字符串中,出现在一个字符数组中任意字符最后一次出现的位置。,2023/3/16,19,C#程序设计实用教程,7.1.1 静态字符串String,3.格式化字符串Format方法用于创建格式化的字符串以及连接多个字符串对象。Foramt方法也有多个重载形式,最常用的为:public static string Format(string format,params object args);其中,参数format用于指定返回字符串的格式,而args为一系列变量参数。,2023/3/16,20
13、,C#程序设计实用教程,7.1.1 静态字符串String,/Format newStr=;newStr=String.Format(0,1!,strA,strB);Console.WriteLine(newStr);/Hello,World!在format参数中包含一些用大括号括起来的数字,如0、1,这些数字分别一一对应于args参数数组中的变量。在生成结果字符串时,将使用这些变量代替i。需要说明的是,这些变量并不要求必须为String类型。,2023/3/16,21,C#程序设计实用教程,7.1.1 静态字符串String,例如,想要输出一定格式的时间字符串,便可以使用Format方法,如
14、下面代码所示。newStr=String.Format(CurrentTime=0:yyyy-MM-dd,System.DateTime.Now);Console.WriteLine(newStr);/形如:2008-09-19 其中,格式字符串“yyyy-MM-dd”指定返回时间的格式形如“2008-09-19”。,2023/3/16,22,C#程序设计实用教程,7.1.1 静态字符串String,4.连接字符串(1)Concat方法 Concat方法用于连接两个或多个字符串/Concat newStr=;newStr=String.Concat(strA,strB);Console.Wri
15、teLine(newStr);/“Hello World,2023/3/16,23,C#程序设计实用教程,7.1.1 静态字符串String,(2)Join方法 Join方法利用一个字符数组和一个分隔符串构造新的字符串。常用于把多个字符串连接在一起,并用一个特殊的符号来分隔开。Join方法的常用形式为:public static string Join(string separator,string values);其中,参数separator为指定的分隔符,而values用于指定所要连接的多个字符串数组。,2023/3/16,24,C#程序设计实用教程,7.1.1 静态字符串String,下
16、例用“”分隔符把“Hello”和“World”连起来。/Join newStr=;String strArr=strA,strB;newStr=String.Join(,strArr);Console.WriteLine(newStr);/HelloWorld,2023/3/16,25,C#程序设计实用教程,7.1.1 静态字符串String,(3)连接运算符“+”String支持连接运算符“+”,可以方便地连接多个字符串。例如,下例把“Hello”和“World”连接起来。/+newStr=;newStr=strA+strB;Console.WriteLine(newStr);/HelloW
17、orld,2023/3/16,26,C#程序设计实用教程,7.1.1 静态字符串String,5.分隔字符串使用Split方法可以把一个整串,按照某个分隔符,分裂成一系列小的字符串。例如,把整串,按照某个分隔符,分裂成一系列小的字符串。例如,把整串“HelloWorld”按照字符“”进行分裂,可以得到3个小的字符串,即“Hello”、“”(空串)和“World”。Split方法最常用的形式为:public string Split(params char separator);其中,参数separator数组包含分隔符。,2023/3/16,27,C#程序设计实用教程,7.1.1 静态字符串S
18、tring,/Split newStr=HelloWorld;char separator=;String splitStrings=new String100;splitStrings=newStr.Split(separator);int i=0;while(isplitStrings.Length)Console.WriteLine(item0:1,i,splitStringsi);i+;,输出结果如下:Item0:Hello Item1:Item2:World,2023/3/16,28,C#程序设计实用教程,7.1.1 静态字符串String,6.插入和填充字符串String类包含了在
19、一个字符串中插入新元素的方法,可以用Insert方法在任意插入任意字符。Insert方法用于在一个字符串的指定位置插入另一个字符串,从而构造一个新的串。Insert方法最常用的为:public string Insert(int startIndex,string value);其中,参数startIndex用于指定所要插入的位置,从开始索引;value指定所要插入的字符串。,2023/3/16,29,C#程序设计实用教程,7.1.1 静态字符串String,下例中,在“Hello”的字符“H”后面插入“World”,构造一个串“HWorldello”。/Insert newStr=;newS
20、tr=strA.Insert(1,strB);Console.WriteLine(newStr);/HWorldello,2023/3/16,30,C#程序设计实用教程,7.1.1 静态字符串String,7.删除和剪切字符串String类包含了删除一个字符串的方法。可以用Remove方法在任意位置删除任意长度的字符。也可以使用Trim/TrimeEnd/TrimStart方法剪切掉字符串中的一些特定字符。,2023/3/16,31,C#程序设计实用教程,7.1.1 静态字符串String,(1)Remove方法 Remove方法从一个字符串的指定位置开始,删除指定数量的字符。最常用的形式为:
21、public string Remove(int startIndex,int count);其中,参数startIndex用于指定开始删除的位置,从开始索引;count指定删除的字符数量。下例中,把“Hello”中的“ell”删掉。/Remove newStr=;newStr=strA.Remove(1,3);Console.WriteLine(newStr);/Ho,2023/3/16,32,C#程序设计实用教程,7.1.1 静态字符串String,(2)Trim/TrimStart/TrimEnd方法 若想把一个字符串首尾处的一些特殊字符剪切掉,如去掉一个字符串首尾的空格等,可以使用St
22、ring的Trim()方法。其形式如下:public string Trim()public string Trim(params char trimChars)其中,参数trimChars数组包含了指定要去掉的字符,如果缺省,则删除空格符号。下例中,实现了对“Hello#$”的净化,去掉首尾的特殊符号。,2023/3/16,33,C#程序设计实用教程,7.1.1 静态字符串String,/Trim newStr=;char trimChars=,#,$,;String strC=Hello#$;newStr=strC.Trim(trimChars);Console.WriteLine(new
23、Str);/Hello 另外,同Trim类似,TrimStart和TrimEnd分别剪切掉一个字符串开头和结尾处的特殊字符。,2023/3/16,34,C#程序设计实用教程,7.1.1 静态字符串String,8.复制字符串String类包括了复制字符串方法Copy和CopyTo,可以完成对一个字符串及其一部分的复制操作。,2023/3/16,35,C#程序设计实用教程,7.1.1 静态字符串String,(1)Copy方法 若想把一个字符串复制到另一个字符数组中,可以使用String的静态方法Copy来实现,其形式为:public string Copy(string str);其中,参数s
24、tr为需要复制的源字符串,方法返回目标字符串。下例中,把strA字符串“Hello”复制到newStr中。/Copy newStr=;newStr=String.Copy(strA);Console.WriteLine(newStr);/Hello,2023/3/16,36,C#程序设计实用教程,7.1.1 静态字符串String,(2)CopyTo方法 CopyTo方法可以实现Copy同样的功能,但功能更为丰富,可以复制字符串的一部分到一个字符数组中。其形式为:public void CopyTo(int sourceIndex,char destination,int destinatio
25、nIndex,int count);其中,参数sourceIndex为需要复制的字符起始位置,destination为目标字符数组,destinationIndex指定目标数组中的开始存放位置,而count指定要复制的字符个数。,2023/3/16,37,C#程序设计实用教程,7.1.1 静态字符串String,下例中,把strA字符串“Hello”中的“ell”复制到newCharArr中,并在newCharArr中从第2个元素开始存放。/CopyTo char newCharArr=new char100;strA.CopyTo(2,newCharArr,0,3);Console.Writ
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C# 常用 数据结构 算法
链接地址:https://www.31ppt.com/p-3718884.html