书签 分享 收藏 举报 版权申诉 / 103
上传文档赚钱

类型第十七部分字符串字符和正则表达式教学课件.ppt

  • 上传人(卖家):晟晟文业
  • 文档编号:4469286
  • 上传时间:2022-12-11
  • 格式:PPT
  • 页数:103
  • 大小:621.01KB
  • 【下载声明】
    1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
    2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
    3. 本页资料《第十七部分字符串字符和正则表达式教学课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
    4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
    5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    第十七 部分 字符串 字符 正则 表达式 教学 课件
    资源描述:

    1、第十七章 字符串、字符和正则表达式本章的学习内容包括三个方面:1 创建和操纵 String 类的不可变字符串对象。2 创建和操纵 StringBuilder 类的可变字符串对象。3 结合 Regex 类和 Match 类来使用正则表达式。前面我们已经多次接触到 String 类的使用,本章将通过实例详细介绍定义在 System 命名空间中的 String 类型和 Char 结构类型的创建和操纵方法。可变字符串类 StringBuilder 是定义在命名空间 System:Text 中的,本章也将通过实例详细介绍使用 StringBuilder 创建和操纵的字符串与 String 类字符串的相同

    2、之处和存在的差异。正则表达式是具有特殊格式的字符串,用来创建特定的字符串格式以便构造符合格式的字符串或识别已有字符串是否指定的格式。创建和操纵正则表达式的 Regex 和 Match 类型是定义在 System:Text:RegularExpression 命名空间中的,本章还将通过实例介绍正则表达式的使用。17.1 String 的创建字符串是程序的重要组成元素,C+/CLI 程序中的字符串是根据“Unicode 字符集”来建立的。Unicode 是一种国际字符集包含了比 ASCII 字符集多得多的符号和字母。字符串是被视为一个整体的一系列字符。在 C+/CLI 中,字符串是 String

    3、类的一个对象。是托管引用类型,所以托管类程序中通常使用 String 指针来操纵 String 类对象。在 C+/CLI 中,String 类直接量的表示方式有两种。例如:String color=“bulue”;/标准 C+字符串类型直接量String color=L“bulue”;/托管字符串类型直接量注意,在旧版本的 MC+中,托管字符串类型常量表示为:String color=S“bulue”,而 L“bulue”表示标准 C+宽字符串类型常量。本节的实例是一个命名为 StringConstructor 的托管控制台应用程序,描述了 String 类对象的创建和显示。String 类的

    4、构造函数有 8 个不同版本:String(Char);用字符数组中的 Unicode 字符初始化创建的 String 类对象。String(array);同上。String(SByte);用有符号字节数组中的内容初始化创建的 String 类对象。String(Char,Int32);用指定个数的 Unicode 字符初始化创建的 String 类对象。String(Char,Int32,Int32);用字符数组中指定位置开始的指定个数 Unicode 字符初始化创建的 String 类对象。String(array,Int32,Int32);同上。String(SByte,Int32,Int

    5、32);用有符号字节数组中指定位置开始的指定个数字节初始化创建的 String 类对象。String(SByte,Int32,Int32,Encoding);用有符号字节数组中指定位置开始的指定个数字节和一个 Encoding(编码)类对象初始化创建的String 类对象。注意,本章实例 StringConstructor 中用托管数组 characterArray 定义、创建和初始化一个字符串的代码:array characterArray=gcnew array b,i,r,t,h,d,a,y;另外,由于程序需要使用了信息框类 MessageBox,所以需要添加使用该类所属命名空间和相应动

    6、态库的语句:#using using namespace System:Windows:Forms;实例 StringConstructor 的运行结果:17.2String 的索引属性、Length 属性和 CopyTo 方法String 的索引属性用于只读访问其内含的字符数组中指定位置的字符。例如,本例 StringMethods 中的使用方法如下:String string1,output;for(int i=string1-Length 1;i=0;i-)output=String:Concat(output,string1i.ToString();其中 string1i 等价于 st

    7、ring1-default:get(i)。Length 属性用于只读访问其内含的字符数组的长度。例如,上述代码中的 string1-Length,等价于 string1-Length:get()。CopyTo 方法用于将指定对象中从指定位置开始的指定个数字符复制到一个指定托管字符数组中。该方法的原型如下:Void CopyTo(int sourceIndex,array destination,int destinationIndex,int count)例如,本例中调用该方法的代码如下:String string1,output;array characterArray=gcnew arra

    8、y(5);string1-CopyTo(0,characterArray,0,5);其操作含义是将 string1 中从 0 位置开始的 5 个字符复制到字符数组 characterArray 中从 0 位置开始的连续空间中。本节实例 StringMethods 也是一个托管类控制台程序,由于程序需要使用了信息框类 MessageBox,所以需要添加使用该类所属命名空间和相应动态库的语句:#using using namespace System:Windows:Forms;该程序的运行结果如下:17.3 比较字符串1 使用 Equals,CompareTo 方法和=运算符这些方法的原型:bo

    9、ol Equals(String,String);bool Equals(Object,Object);静态方法。用于比较两个指定字符串是否相等。bool Equals(String);bool Equals(Object);动态方法。用于比较该字符串对象是否与指定字符串相等。int CompareTo(Object);动态方法。用于该对象与指定对象比较,并返回相关指示值。=是运算符方法,用于比较两个指定字符串。本章的实例 StringCompare 是一个托管类控制台程序,由于程序需要使用了信息框类 MessageBox,所以需要添加使用该类所属命名空间和相应动态库的语句:#using us

    10、ing namespace System:Windows:Forms;实例的运行结果如下:2 使用 StartsWith 和 EndsWith 方法这两个方法的原型:bool StartsWith(String);动态方法。用于比较调用该方法的字符串对象的开头部分是否与参数指定字符串相同。bool EndsWith(String);动态方法。用于比较调用该方法的字符串对象的结尾部分是否与参数指定字符串相同。本节的实例 StringStartEnd 也是一个托管类控制台程序,由于程序需要使用了信息框类 MessageBox,所以需要添加使用该类所属命名空间和相应动态库的语句:#using usi

    11、ng namespace System:Windows:Forms;该实例的运行结果如下:17.4 在字符串中定位字符和子字符串许多应用程序需要在字符串搜索一个或者一系列字符。例如,字处理软件一般要提供搜索整篇文档的功能。本例是一个名为 StringIndexMethods 的托管类控制台程序,该程序中演示了String 类的 IndexOf、IndexOfAny、LastIndexOf 和 LastIndexOfAny 等方法的调用方法和功能。这些方法的原型如下:int IndexOf(Char);用于在调用方法的 String 对象中,搜索指定字符,返回第一次匹配字符的位置值。int In

    12、dexOf(String);用于在调用方法的 String 对象中,搜索指定子串,返回第一次匹配子串的位置值。int IndexOf(Char,Int32);用于在调用方法的 String 对象中,从指定位置开始,搜索指定字符,返回第一次匹配字符的位置值。int IndexOf(String,Int32);用于在调用方法的 String 对象中,从指定位置开始,搜索指定子串,返回第一次匹配子串的位置值。int IndexOf(String,StringComparison);用于在调用方法的 String 对象中,按指定搜索类型,搜索指定子串,返回第一次匹配子串的位置值。int IndexOf

    13、(Char,Int32,Int32);用于在调用方法的 String 对象中,从指定开始位置到指定结束位置之间,搜索指定字符,返回第一次匹配字符的位置值。int IndexOf(String,Int32,Int32);用于在调用方法的 String 对象中,从指定开始位置到指定结束位置之间,搜索指定子串,返回第一次匹配子串的位置值。int IndexOf(String,Int32,StringComparison);用于在调用方法的 String 对象中,从指定位置开始,按指定搜索类型,搜索指定子串,返回第一次匹配子串的位置值。int IndexOf(String,Int32,Int32,St

    14、ringComparison);用于在调用方法的 String 对象中,从指定开始位置到指定结束位置之间,按指定搜索类型,搜索指定子串,返回第一次匹配子串的位置值。int IndexOfAny(array);用于在调用方法的 String 对象中,搜索与指定字符数组中任意字符匹配的字符,返回第一次匹配字符的位置值。int IndexOfAny(array,Int32);用于在调用方法的 String 对象中,从指定位置开始,搜索与指定字符数组中任意字符匹配的字符,返回第一次匹配字符的位置值。int IndexOfAny(array,Int32,Int32);用于在调用方法的 String 对象

    15、中,从指定开始位置到指定结束位置之间,搜索与指定字符数组中任意字符匹配的字符,返回第一次匹配字符的位置值。int LastIndexOf(Char);用于在调用方法的 String 对象中,搜索指定字符,返回最后一次匹配字符的位置值。int LastIndexOf(String);用于在调用方法的 String 对象中,搜索指定的子串,返回最后一次匹配子串的位置值。int LastIndexOf(Char,Int32);用于在调用方法的 String 对象中,从指定位置开始,搜索指定字符,返回最后一次匹配字符的位置值。int LastIndexOf(String,Int32);用于在调用方法的

    16、 String 对象中,从指定位置开始,搜索指定子串,返回最后一次匹配子串的位置值。int LastIndexOf(String,StringComparison);用于在调用方法的 String 对象中,按指定搜索类型,搜索指定子串,返回最后一次匹配子串的位置值。int LastIndexOf(Char,Int32,Int32);用于在调用方法的 String 对象中,从指定开始位置到指定结束位置之间,搜索指定字符,返回最后一次匹配字符的位置值。int LastIndexOf(String,Int32,Int32);用于在调用方法的 String 对象中,从指定开始位置到指定结束位置之间,搜

    17、索指定子串,返回最后一次匹配子串的位置值。int LastIndexOfAny(array);用于在调用方法的 String 对象中,搜索与指定字符数组中任意字符匹配的字符,返回最后一次匹配字符的位置值。int LastIndexOfAny(array,Int32);用于在调用方法的 String 对象中,从指定位置开始,搜索与指定字符数组中任意字符匹配的字符,返回最后一次匹配字符的位置值。int LastIndexOfAny(array,Int32,Int32);用于在调用方法的 String 对象中,从指定开始位置到指定结束位置之间,搜索与指定字符数组中任意字符匹配的字符,返回最后一次匹配

    18、字符的位置值。本节实例 StringIndexMethods 也是一个托管类控制台程序,由于程序需要使用了信息框类 MessageBox,所以需要添加使用该类所属命名空间和相应动态库的语句:#using using namespace System:Windows:Forms;实例的运行结果如下:17.5 从字符串提取子字符串String 类提供了两个不同版本的提取子字符串方法 Substring,该方法的两个版本原型如下:String Substring(Int32);用于在调用方法的 String 对象中,获取从指定位置开始的剩余子字符串,并返回该子字符串拷贝的引用指针。String Su

    19、bstring(Int32,Int32);用于在调用方法的 String 对象中,获取从指定位置开始的指定长度的子字符串,并返回该子字符串拷贝的引用指针。实例 Substring 也是一个托管类控制台程序,由于程序需要使用了信息框类 MessageBox,所以需要添加使用该类所属命名空间和相应动态库的语句:#using using namespace System:Windows:Forms;实例的运行结果如下:17.6String 的其他方法String 类还提供了几个方法,Replace、ToLower、ToUpper、Trim 和 ToString 用于返回原始字符串的一个修改过的拷贝。

    20、这些方法的原型如下:String Replace(Char,Char);用于将调用方法的 String 对象中所有由第一个参数指定的字符替换为第二个参数指定的字符,并返回修改的 String 对象拷贝的引用指针。String Replace(String,String);用于将调用方法的 String 对象中所有由第一个参数指定的子串替换为第二个参数指定的字串,并返回修改后的 String 对象拷贝的引用指针。String ToLower();依据当前的语言(例如,英文、法文等)缺省规则,将调用方法的 String 对象中所有字符转换小写,并返回修改后的String 对象拷贝引用指针。Stri

    21、ng ToLower(CultureInfo);依据参数指定的语言(例如,英文、法文等)规则,将调用方法的 String 对象中所有字符转换小写,并返回修改后的 String 对象拷贝的引用指针。String ToUpper();依据当前的语言(例如,英文、法文等)缺省规则,将调用方法的 String 对象中所有字符转换大写,并返回修改后的 String 对象拷贝的引用指针。String ToUpper(CultureInfo);依据参数指定的语言(例如,中文、英文等)规则,将调用方法的 String 对象中所有字符转换大写,并返回修改后的 String 对象拷贝的引用指针。String Tr

    22、im();用于删除调用方法的 String 对象中字符串头部和尾部的空格字符,并返回修改后的 String 对象拷贝的引用指针。String Trim(array);用于删除调用方法的 String 对象中字符串头部和尾部的所有由字符数组中指定的字符,返回修改后的 String 对象拷贝的引用指针。String ToString();返回实际上未修改的 String 对象拷贝的引用指针。String ToString(IFormatProvider);依据指定的格式变换调用方法的 String 对象中字符串格式并返回修改后的 String 对象拷贝的引用指针。本节实例 StringMiscel

    23、laneous2 演示了如何使用这些方法,该实例也是托管类控制台程序,由于程序需要使用了信息框类 MessageBox,所以需要添加使用该类所属命名空间和相应动态库的语句:#using using namespace System:Windows:Forms;实例的运行结果如下:17.7StringBuilder 类String 类提供了许多字符串处理功能,但字符串内容永远不会改变。换句话说,String 类只能创建和操纵“不可变字符串”。例如,使用 String 类的 Concat 方法进行字符串连接,实际上是创建了一个新字符串,而被连接的字符串的内容并未发生变化。定义在 System:Te

    24、xt 命名空间中的 StringBuilder 类用于创建和操纵动态的字符串信息,即“可变字符串”(Mutable String)。每个 StringBuilder 类对象都能存储特定数量的字符,具体由它的“容量”(Capacity)属性来指定。扩展一个 StringBuilder 类对象的容量,就可以在对象中存储更多的字符。例如,可以 StringBuilder 类的 Append 和 AppendFormat 方法进行与 String 类的 Concat 方法相似的连接操作,但无须重新创建一个字符串。StringBuilder 类提供了 6 个重载的构造函数:StringBuilder()

    25、;创建一个具有缺省容量的空字符串对象。StringBuilder(Int32);创建一个具有指定容量的空字符串对象。StringBuilder(String);依据指定字符串,创建一个字符串。StringBuilder(Int32,Int32);创建一个指定容量,并可扩容到指定最大容量的空字符串。StringBuilder(String,Int32);依据指定字符串和指定的建议容量,创建一个字符串。StringBuilder(String,Int32,Int32,Int32);依据指定的子串(第二个参数指定子串开始位置,第三个参数指定子串长度)和指定的建议容量(第四个参数),创建一个字符串。本

    26、节实例 StringBuilderConstructor 也是一个托管类控制台程序,该实例中使用了 StringBuilder 类的三个版本的构造函数创建字符串对象。由于程序中使用了 StringBuilder 类和信息框类 MessageBox,所以需要添加使用该类所属命名空间和相应动态库的语句:#using using namespace System:Windows:Forms;using namespace System:Text;实例的运行结果如下:17.8StringBuilder 类的属性 Length、Capacity 和方法 EnsureCapacityStringBuild

    27、er 类的 Length 和 Capacity 属性分别获取 StringBuilder 类对象当前的字符数,以及在不分配更多内存的前提下,该 StringBuilder 类对象最多能够存储的字符数。利用这些属性还能增大或缩小 StringBuilder 类对象的长度和容量。EnsureCapacity 方法可以确保一个 StringBuilder 类对象具有足够的容量(使它大于或等于一个指定的值),从而有效地减少了以后必须扩容的次数。该方法的原型如下:int EnsureCapacity(int);如果指定值大于字符串的当前容量,则增大字符串容量大于或等于指定值;否则不增容。本节实例 Str

    28、ingBuilderFeatures 也是一个托管类控制台程序,在实例中演示了对 StringBuilder 类的 Length 和 Capacity 属性以及 EnsureCapacity 方法的使用。由于程序中使用了 StringBuilder 类和信息框类 MessageBox,所以需要添加使用该类所属命名空间和相应动态库的语句:#using using namespace System:Windows:Forms;using namespace System:Text;该实例的运行结果如下:17.9StringBuilder 类的 Append 和 AppendFormat 方法1St

    29、ringBuilder 类提供了 19 个重载版本的 Append 方法,允许将各种数据类型值添加到一个 StringBuilder 类对象的末尾。C+/CLI 针对每种基元数据类型、字符数组、String 指针和 Object 指针 都提供了独立的 Append 方法版本。每种版本都将参数传递的值转换成 String 对象,再把它追加到 StringBuilder 类对象的末尾。这两个方法的多个版本的原型如下:StringBuilder Append(Boolean);由参数指定的布尔数值的字串表达(String 类对象)被追加到调用方法的字串实例(StringBuilder 类对象)尾部。

    30、StringBuilder Append(Byte);由参数指定的 8 位无符号整数值的字串表达(String 类对象)被追加到调用方法的字串实例(StringBuilder 类对象)尾部。StringBuilder Append(Char);由参数指定的 Unicode 字符值的字串表达(String 类对象)被追加到调用方法的字串实例(StringBuilder 类对象)尾部。StringBuilder Append(Char);由参数指定的 Unicode 字符数组中的字符值的字串表达(String 类对象)被追加到调用方法的字实例(StringBuilder 类对象)尾部。String

    31、Builder Append(Decimal);由参数指定的十进制整数数值的字串表达(String 类对象)被追加到调用方法的字串实例(StringBuilder 类对象)尾部。StringBuilder Append(Double);由参数指定的双精度浮点数值的字串表达(String 类对象)被追加到调用方法的字串实例(StringBuilder 类对象)尾部。StringBuilder Append(Int16);由参数指定的 16 位整数值的字串表达(String 类对象)被追加到调用方法的字串实例(StringBuilder 类对象)尾部。StringBuilder Append(In

    32、t32);由参数指定的 32 位整数值的字串表达(String 类对象)被追加到调用方法的字串实例(StringBuilder 类对象)尾部。StringBuilder Append(Int64);由参数指定的 64 位整数值的字串表达(String 类对象)被追加到调用方法的字串实例(StringBuilder 类对象)尾部。StringBuilder Append(Object);由参数指定的 Obeject 或派生的托管引用类对象的字串表达(String 类对象)被追加到调用方法的字串实例(StringBuilder 类对象)尾部。StringBuilder Append(SByte);

    33、由参数指定的 8 位有符号整数值的字串表达(String 类对象)被追加到调用方法的字串实例(StringBuilder 类对象)尾部。StringBuilder Append(Single);由参数指定的单精度浮点数值的字串表达(String 类对象)被追加到调用方法的字串实例(StringBuilder 类对象)尾部。StringBuilder Append(String);由参数指定的 String 类型对象被追加到调用方法的字串实例(StringBuilder 类对象)的尾部。StringBuilder Append(UInt16);由参数指定的 16 位无符号整数值的字串表达(Str

    34、ing 类对象)被追加到调用方法的字串实例(StringBuilder 类对象)尾部。StringBuilder Append(UInt32);由参数指定的 32 位无符号整数值的字串表达(String 类对象)被追加到调用方法的字串实例(StringBuilder 类对象)尾部。StringBuilder Append(UInt64);由参数指定的 64 位无符号整数值的字串表达(String 类对象)被追加到调用方法的字串实例(StringBuilder 类对象)尾部。StringBuilder Append(Char,Int32);由第一参数指定的 Unicode 字符值的字串表达(St

    35、ring 类对象)的指定个数(第二参数指定)拷贝被追加到调用方法的字符串实例(StringBuilder 类对象)尾部。StringBuilder Append(Char,Int32,Int32);由第一参数指定的 Unicode 字符数组中指定子字串的字符值的字串表达(String 类对象)被追加到调用方法的字符串实例(StringBuilder 类对象)尾部。第二参数指定了子字串的开始位置,第三参数指定了子字串中的字符个数。StringBuilder Append(String,Int32,Int32);由参数指定的 String 类型对象的子字串被追加到调用方法的字串实例(StringB

    36、uilder类对象)的尾部。第二参数指定了子字串的开始位置,第三参数指定了子字串中的字符个数。本节的第一个实例 StringBuilderAppend 也是一个托管类控制台程序,在该实例中演示了对 StringBuilder 类的 Append 方法的使用。由于程序中使用了 StringBuilder 类和信息框类 MessageBox,所以需要添加使用该类所属命名空间和相应动态库的语句:#using using namespace System:Windows:Forms;using namespace System:Text;实例的运行结果如下:2StringBuilder 类提供了多个重

    37、载版本的 AppendFormat 方法,允许将一个或多个托管类对象转换成指定的格式的 String 类对象,然后再把它追加到 StringBuilder 类对象的尾部。下面给出该方法最常用的两个版本的原型:StringBuilder AppendFormat(String,Object,);由第二参数开始指定的 Obeject 或派生的托管引用类对象的指定的格式字串表达(String 类对象)被追加到调用方法的字串实例(StringBuilder 类对象)的尾部。第一参数指定了追加字串的格式。StringBuilder AppendFormat(String,array);由最后一个参数指定

    38、的 Obeject 或派生的托管引用类数组中每个对象的指定的格式字串表达(String 类对象)被追加到调用方法的字串实例(StringBuilder 类对象)尾部。前面的参数指定了托管引用类数组中每个对象的字串的格式。本节的第二个实例 StringBuilderAppendFormat 也是一个托管类控制台程序,该实例演示了对 StringBuilder 类的 AppendFormat 方法的使用。由于程序中使用了 StringBuilder 类和信息框类 MessageBox,所以需要添加使用该类所属命名空间和相应动态库的语句:#using using namespace System:W

    39、indows:Forms;using namespace System:Text;实例的运行结果如下:17.10 StringBuilder 类的 Insert,Remove 和 Replace 方法1StringBuilder 类提供了 18 个重载版本的 Insert 方法,允许将各种数据类型值对象或引用类型对象的字符串表达(String 类型对象)插入到一个 StringBuilder 类对象的任何指定位置。为此,StringBuilder 类为每种基元数据类型、字符数组、String 指针和 Object 指针都提供了相应的 Insert 方法版本。每种版本的第一个参数总是用于指定插入

    40、的位置,其他参数用于传递需要插入的类型对象。下面给出四个有代表性的版本原型:StringBuilder Insert(Int32,Double);第二参数指定的双精度浮点数值的字串表达(String 类对象)被插入到调用方法的字符串实例(StringBuilder 类对象)的指定位置(由第一参数指定)。StringBuilder Insert(Int32,Object);第二参数指定的 Obeject 或派生的托管引用类对象的字串表达(String 类对象)被插入到调用方法的字串实例(StringBuilder 类对象)的指定位置(由第一参数指定)。StringBuilder Insert(I

    41、nt32,String,Int32);第二参数指定的 String 类型对象的 n 个拷贝被插入到调用方法的字串实例(StringBuilder 类对象)的指定位置(由第一参数指定)。第三参数指定了 String 类型对象的拷贝个数 n。StringBuilder Insert(Int32,Char,Int32,Int32);第二参数指定的 Unicode 字符数组中指定子字串字符值的字串表达(String 类对象)被插入到调用方法的字串实例(StringBuilder 类对象)指定位置。第三参数指定了子字串的开始位置,第四参数指定了子字串中的字符个数。StringBuilder 类还提供了

    42、Remove 方法,使用该方法能删除字符串的任何部分。该方法的原型如下:StringBuilder Remove(int,int);删除字串实例中从指定位置(第一参数指定)开始,指定个数(第二参数指定)字符,并返回修改后的字符串。本节的第一个实例 StringBuilderInsertRemove 也是一个托管类控制台程序,该实例演示了对 StringBuilder 类的 Insert 和 Remove 方法的使用。由于程序中使用了 StringBuilder 类和信息框类 MessageBox,所以需要添加使用该类所属命名空间和相应动态库的语句:#using using namespace

    43、System:Windows:Forms;using namespace System:Text;实例的运行结果如下:2StringBuilder 类提供的 Replace 方法也非常有用。使用该方法能够搜索指定的字符串或字符,然后用另一个指定的字符串或字符来替换。该方法有 4 个版本,这些版本的原型:StringBuilder Replace(Char,Char);在字串实例中,用第二参数指定的字符替换所有由第一参数指定的字符,并返回修改后的字串实例。StringBuilder Replace(String,String);在字串实例中,用第二参数指定的字串替换所有由第一参数指定的字串,并返

    44、回修改后的字串实例。StringBuilder Replace(Char,Char,Int32,Int32);在字串实例中,从指定的位置(第三参数给出)开始的确定长度(第四个参数给出)的子字串中,用第二个参数指定的字符替换所有由第一个参数指定的字符,并返回修改后的字串实例。StringBuilder Replace(String,String,Int32,Int32);在字串实例中,从指定的位置(第三参数给出)开始的确定长度(第四个参数给出)的子字串中,用第二个参数指定的字串替换所有由第一个参数指定的字串,并返回修改后的字串实例。本节的第二个实例 StringBuilderReplace 也是

    45、一个托管类控制台程序,该实例演示了对 StringBuilder 类的 Replace 方法的使用。由于程序中使用了 StringBuilder 类和信息框类 MessageBox,所以需要添加使用该类所属命名空间和相应动态库的语句:#using using namespace System:Windows:Forms;using namespace System:Text;实例的运行结果如下:17.11 Char 类型的方法Char 类型和其他基元数据类型一样,是 C+/CLI 提供的一种结构数据类型。它提供的方法大多数是静态方法,这些方法至少要获取一个字符参数,并对该字符执行一次测试或操作

    46、。对这些方法的调用形式与对其他类型的方法调用形式相同。本节的实例 StaticCharMethods 是一个托管类窗口程序,实例的功能是:对用户从键盘输入的字符进行分析,并将分析结果信息显示输出。为此,程序中使用了 Char 类型判断字符是否属于特定字符类型的静态方法(IsDigit、IsLetter 等),以及对字符执行大小写转换的静态方法(ToUpper、ToLower 等)。该实例的 GUI 设计如下:实例的运行结果如下:17.12 洗牌和发牌模拟实例本节的实例是使用随机数生成技术设计、编写的一个模拟洗牌和发牌的托管类窗口应用程序。该程序的设计思路和方法可在模拟玩牌的其他应用程序中直接使

    47、用。在程序设计中,Card 类是用来描述“牌”这个重要对象的。该类包含两个 String 数据成员,即用于存储“牌”的牌面名称的 face 和用于存储“牌”的花色名称的 suit。用于创建每张“牌”对象的构造函数需要接收两个 String 参数,来初始化 face 和 suit。Card 类还包含一个 ToString 方法,用于创建由 face 和 suit 连接构成的 String 对象,并返回该对象类型的引用指针 String。在应用程序的主窗体类 Form1 中添加一个包含 52 个 Card 的数组,用于存放一副牌。为了交互实现洗牌和发牌操作,需要在主窗体中添加两个按钮(Button

    48、)控件,分别用于产生洗牌和发牌的事件。另外,还需要添加两个标签(Label)控件,用于发牌操作时,显示当前牌在一副牌中的顺序,以及该牌的花色和牌面信息。主窗体的 GUI 设计如下:在程序的编写需要注意以下几点:1Card 类的 ToString 方法应该是重载基类 System:Object 的虚方法 ToString,所以必须在方法的声明或定义首行加入 virtual 前缀和 override 或 new 后缀。virtual String ToString()override;2 存储一副牌的数组应该是一个静态托管类数组,其定义代码如下:private:static array deck=

    49、gcnew array(52);3 数组 deck 的初始化应该在主窗体创建的同时进行。为此,需要添加主窗体类 Form1 的 Load 事件的处理方法。该方法的定义代码如下:System:Void Form1_Load(System:Object sender,System:EventArgs e)array faces=gcnew array LAce,LDeuce,LThree,LFour,LFive,LSix,LSeven,LEight,LNine,LTen,LJack,LQueen,LKing;array suits=gcnew array LHearts,LDiamonds,LCl

    50、ubs,LSpades;/no cars have been drawncurrentCard=-1;/initialize deckfor(int i=0;i Length;i+)decki=gcnew Card(facesi%13,suitsi%4);/end method Form1_Load4 洗牌操作的实现思想依次随机交换 deck 数组的两个元素。在完成洗牌操作的 Form1 辅助方法 Shuffle 中,调用了 Random 类的 Next 方法生成 0 51 的随机数,并用所生成的随机数作为每次数组元素交换操作的一个下标值。这样的交换操作依次循环进行 52 次,便完成一次洗牌。

    展开阅读全文
    提示  163文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:第十七部分字符串字符和正则表达式教学课件.ppt
    链接地址:https://www.163wenku.com/p-4469286.html

    Copyright@ 2017-2037 Www.163WenKu.Com  网站版权所有  |  资源地图   
    IPC备案号:蜀ICP备2021032737号  | 川公网安备 51099002000191号


    侵权投诉QQ:3464097650  资料上传QQ:3464097650
       


    【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。

    163文库