您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 经营企划 > C#常用数据结构与算法
第7章常用数据结构与算法数据结构和算法是程序设计的基石。本章重点讲述C#中的几个主要的数据结构类型:字符串、数组和枚举。本章还将介绍一些常用算法,如几种典型排序算法的C#实现。2020/4/52C#程序设计实用教程7.1字符串•字符串是应用程序和用户交互的主要方式之一。•.NET提供了几个类来快速实现字符串操作,包括String、StringBuilder等。2020/4/53C#程序设计实用教程7.1.1静态字符串StringSystem.String是最常用的字符串操作类。下面从各个应用的角度对String类进行详细的介绍。1.比较字符串比较字符串是指按照字典排序规则,判定两个字符的相对大小。在String类中,常用的比较字符串的方法包括Compare、CompareTo、CompareOrdinal以及Equals。2020/4/54C#程序设计实用教程方法说明Compare静态方法。比较两个指定的String对象CompareTo非静态方法。将此字符串与指定的对象或String进行比较,并返回两者相对值的指示Concat静态方法。连接String的一个或多个字符串Contains非静态方法。返回一个值,该值指示指定的String对象是否出现在此字符串中Equals非静态方法。确定两个String对象是否具有相同的值Format静态方法。将指定的String中的每个格式项替换为相应对象的值的文本等效项IndexOf非静态方法。返回String或一个或多个字符在此字符串中的第一个匹配项的索引Insert非静态方法。在该String中的指定索引位置插入一个指定的StringRemove非静态方法。从该String中删除指定个数的字符Replace非静态方法。将该String中的指定String的所有匹配项替换为其他指定的StringSplit非静态方法。返回包含该String中的子字符串(由指定Char或String数组的元素分隔)的String数组Substring非静态方法。从此字符串中检索子字符串ToLower非静态方法。返回该String转换为小写形式的副本ToUpper非静态方法。返回该String转换为大写形式的副本Trim非静态方法。从此字符串的开始位置和末尾移除一组指定字符的所有匹配项串的基本概念空串:不含任何字符的串称为空串空格串:由一个或多个空格组成的串,称为空格串。串相等:是指两个串的长度相等且对应的字符相等。模式匹配:确定子串在主串中首次出现位置的运算。子串:串中任意个连续的字符组成的子序列称为该串的子串。主串:包含子串的串称为该子串的主串。7.1.1静态字符串String(1)Compare方法Compare方法是String类的静态方法,用于全面比较两个字符串对象。下面使用Compare方法来比较两个字符串,输出结果如注释语句所示。//定义两个String对象,并对其赋值System.StringstrA=Hello;System.StringstrB=World;2020/4/57C#程序设计实用教程7.1.1静态字符串String//CompareConsole.WriteLine(String.Compare(strA,strB));//-1Console.WriteLine(String.Compare(strA,strA));//0Console.WriteLine(String.Compare(strB,strA));//12020/4/58C#程序设计实用教程7.1.1静态字符串String(2)CompareTo方法CompareTo方法将当前字符串对象与另一个对象做比较,其作用与Compare类似,返回值也相同。CompareTo与Compare相比,区别在于:CompareTo不是静态方法,可以通过一个String对象调用;CompareTo没有重载形式,只能按照大小写敏感方式比较两个整串。2020/4/59C#程序设计实用教程7.1.1静态字符串StringCompareTo方法的使用如下代码所示://定义两个String对象,并对其赋值System.StringstrA=Hello;System.StringstrB=World;//CompareToConsole.WriteLine(strA.CompareTo(strB));//-12020/4/510C#程序设计实用教程7.1.1静态字符串String(3)Equals方法Equals方法用于方便地判定两个字符串是否相同,有两种重载形式:publicboolEquals(string)publicstaticboolEquals(string,string)如果两个字符串相等,Equals()返回值为True;否则,返回False。Equals方法的使用如下代码所示://EqualsConsole.WriteLine(String.Equals(strA,strB));//falseConsole.WriteLine(strA.Equals(strB));//false2020/4/511C#程序设计实用教程7.1.1静态字符串String(4)比较运算符String支持两个比较运算符“==”、“!=”,分别用于判定两个字符是否相等和不等,并区分大小写。下例中,使用“==”、“!=”对“Hello”和“World”进行比较。//==和!=Console.WriteLine(strA==strB);//falseConsole.WriteLine(strA!=strB);//true2020/4/512C#程序设计实用教程7.1.1静态字符串String2.定位字符和子串定位子串是指在一个字符串寻找其中包含的子串或者某个字符,在String类中,常用的定位子串和字符的方法包括StartWith/EndsWith、IndexOf/LastIndexOf以及IndexOfAny/LastIndexOf。2020/4/513C#程序设计实用教程7.1.1静态字符串String(1)StartWith/EndsWith方法StartWith方法可以判定一个字符串对象是否以另一个子字符串开头,如果是返回True;否则返回False。其定义为:publicboolStartsWith(stringvalue)其中,参数value即待判定的子字符串。//StartWithConsole.WriteLine(strA.StartsWith(He));//trueConsole.WriteLine(strA.StartsWith(She));//false另外,EndsWith方法可以判定一个字符是否以另一个子字符串结尾。2020/4/514C#程序设计实用教程7.1.1静态字符串String(2)IndexOf/LastIndexOf方法IndexOf方法用于搜索一个字符串,某个特定的字符或子串第一次出现的位置,该方法区分大小写,并从字符串的首字符开始以0计数。如果字符串中不包含这个字符或子串,则返回-1。定位字符:intIndexOf(charvalue)intIndexOf(charvalue,intstartIndex)intIndexOf(charvalue,intstartIndex,intcount)2020/4/515C#程序设计实用教程7.1.1静态字符串String定位子串:intIndexOf(stringvalue)intIndexOf(stringvalue,intstartIndex)intIndexOf(stringvalue,intstartIndex,intcount)在上述重载形式中,其参数含义如下:Value:待定位的字符或者子串。startIndex:在总串中开始搜索的起始位置。Count:在总串中从起始位置开始搜索的字符数。2020/4/516C#程序设计实用教程7.1.1静态字符串String下例在“Hello”中寻找字符“l”第一次出现的位置。//IndexofConsole.WriteLine(strA.IndexOf('l'));//2同IndexOf类似,LastIndexOf用于搜索在一个字符串中,某个特定的字符或子串最后一次出现的位置,其方法定义和返回值都与IndexOf相同。2020/4/517C#程序设计实用教程7.1.1静态字符串String(3)IndexOfAny/LastIndexOfAnyIndexOfAny方法功能同IndexOf类似,区别在于,可以搜索在一个字符串中,出现在一个字符数组中的任意字符第一次出现的位置。2020/4/518C#程序设计实用教程7.1.1静态字符串String下例在“Hello”中寻找字符“l”第一次和最后一次出现的位置。//IndexofAny|LastIndexOfAnychar[]anyOf={'H','e','l'};Console.WriteLine(strA.IndexOfAny(anyOf));//0Console.WriteLine(strA.LastIndexOfAny(anyOf));//3同IndexOfAny类似,LastIndexOfAny用于搜索在一个字符串中,出现在一个字符数组中任意字符最后一次出现的位置。2020/4/519C#程序设计实用教程7.1.1静态字符串String3.格式化字符串Format方法用于创建格式化的字符串以及连接多个字符串对象。Foramt方法也有多个重载形式,最常用的为:publicstaticstringFormat(stringformat,paramsobject[]args);其中,参数format用于指定返回字符串的格式,而args为一系列变量参数。2020/4/520C#程序设计实用教程7.1.1静态字符串String//FormatnewStr=;newStr=String.Format({0},{1}!,strA,strB);Console.WriteLine(newStr);//Hello,World!在format参数中包含一些用大括号括起来的数字,如{0}、{1},这些数字分别一一对应于args参数数组中的变量。在生成结果字符串时,将使用这些变量代替{i}。需要说明的是,这些变量并不要求必须为String类型。2020/4/521C#程序设计实用教程7.1.1静态字符串String例如,想要输出一定格式的时间字符串,便可以使用Format方法,如下面代码所示。newStr=String.Format(CurrentTime={0:yyyy-MM-dd},System.DateTime.Now);Console.WriteLine(newStr);//形如:2008-09-19其中,格式字符串“yyyy-MM-dd”指定返回时间的格式形如“2008-09-19”。2020/4/522C#程序设计实用教程7.1.1静态字符串String4.连接字符串(1)Concat方法•Concat方法用于连接两个或多个字符串•//ConcatnewStr=;newStr=String.Concat(strA,,strB);Console.WriteLine(newStr);//“HelloWorld2020/4/523C#程序设计实用教程7.1.1静态字符串String(2)Join方法Join方法利用一个字符数组和一个分隔符串构造新的字符串。常用于把多个字符串连接在一起,并用一个特殊的符号来分隔开。Join方法的常用形式为:publicstaticstringJoin(stringseparator,string[]values);其中,参数separator为指定的分隔符,而values用于指定所要连接的多个字符串数组。2020/4/524C#程序设计实用教程7.
本文标题:C#常用数据结构与算法
链接地址:https://www.777doc.com/doc-4694205 .html