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

上传人:本田雅阁 文档编号:3127439 上传时间:2019-07-14 格式:PPT 页数:103 大小:621.03KB
返回 下载 相关 举报
第十七部分字符串字符和正则表达式教学课件.ppt_第1页
第1页 / 共103页
第十七部分字符串字符和正则表达式教学课件.ppt_第2页
第2页 / 共103页
第十七部分字符串字符和正则表达式教学课件.ppt_第3页
第3页 / 共103页
第十七部分字符串字符和正则表达式教学课件.ppt_第4页
第4页 / 共103页
第十七部分字符串字符和正则表达式教学课件.ppt_第5页
第5页 / 共103页
点击查看更多>>
资源描述

《第十七部分字符串字符和正则表达式教学课件.ppt》由会员分享,可在线阅读,更多相关《第十七部分字符串字符和正则表达式教学课件.ppt(103页珍藏版)》请在三一文库上搜索。

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

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

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

4、tor 的托管控制台应用 程序,描述了 String 类对象的创建和显示。String 类的构造函数 有 8 个不同版本: String( Char ); 用字符数组中的 Unicode 字符初始化创建的 String 类对象。 String( array ); 同上。,String( SByte ); 用有符号字节数组中的内容初始化创建的 String 类对象。 String( Char, Int32 ); 用指定个数的 Unicode 字符初始化创建的 String 类对象。 String( Char, Int32, Int32 ); 用字符数组中指定位置开始的指定个数 Unicode 字

5、符初始化创 建的 String 类对象。 String( array, Int32, Int32 ); 同上。 String( SByte, Int32, Int32 ); 用有符号字节数组中指定位置开始的指定个数字节初始化 创建的 String 类对象。,String( SByte, Int32, Int32, Encoding ); 用有符号字节数组中指定位置开始的指定个数字节和一个 Encoding (编码)类对象初始化创建的String 类对象。 注意,本章实例 StringConstructor 中用托管数组 characterArray 定义、创建和初始化一个字符串的代码: arr

6、ay characterArray = gcnew array b,i,r,t,h,d,a,y ; 另外,由于程序需要使用了信息框类 MessageBox,所以需要 添加使用该类所属命名空间和相应动态库的语句: #using using namespace System:Windows:Forms;,实例 StringConstructor 的运行结果:,17.2 String 的索引属性、Length 属性和 CopyTo 方法 String 的索引属性用于只读访问其内含的字符数组中指定位置 的字符。例如,本例 StringMethods 中的使用方法如下: String string1,

7、output; for( int i = string1-Length 1; i = 0; i- ) output = String:Concat( output, string1i.ToString() ); 其中 string1i 等价于 string1-default:get( i )。 Length 属性用于只读访问其内含的字符数组的长度。例如, 上述代码中的 string1-Length,等价于 string1-Length:get()。,CopyTo 方法用于将指定对象中从指定位置开始的指定个数字 符复制到一个指定托管字符数组中。该方法的原型如下: Void CopyTo ( in

8、t sourceIndex, array destination, int destinationIndex, int count ) 例如,本例中调用该方法的代码如下: String string1, output; array characterArray = gcnew array( 5 ); string1-CopyTo( 0, characterArray, 0, 5); ,其操作含义是将 string1 中从 0 位置开始的 5 个字符复制到字符 数组 characterArray 中从 0 位置开始的连续空间中。 本节实例 StringMethods 也是一个托管类控制台程序,由

9、于程 序需要使用了信息框类 MessageBox,所以需要添加使用该类所 属命名空间和相应动态库的语句: #using using namespace System:Windows:Forms;,该程序的运行结果如下:,17.3 比较字符串 1 使用 Equals, CompareTo 方法和 = 运算符 这些方法的原型: bool Equals( String, String ); bool Equals( Object, Object ); 静态方法。用于比较两个指定字符串是否相等。 bool Equals( String ); bool Equals( Object ); 动态方法。用于

10、比较该字符串对象是否与指定字符串相等。 int CompareTo ( Object );,动态方法。用于该对象与指定对象比较,并返回相关指示值。 = 是运算符方法,用于比较两个指定字符串。 本章的实例 StringCompare 是一个托管类控制台程序,由于程 序需要使用了信息框类 MessageBox,所以需要添加使用该类所 属命名空间和相应动态库的语句: #using using namespace System:Windows:Forms;,实例的运行结果如下:,2 使用 StartsWith 和 EndsWith 方法 这两个方法的原型: bool StartsWith( Strin

11、g ); 动态方法。用于比较调用该方法的字符串对象的开头部分是 否与参数指定字符串相同。 bool EndsWith( String ); 动态方法。用于比较调用该方法的字符串对象的结尾部分是 否与参数指定字符串相同。 本节的实例 StringStartEnd 也是一个托管类控制台程序,由于 程序需要使用了信息框类 MessageBox,所以需要添加使用该类 所属命名空间和相应动态库的语句:,#using using namespace System:Windows:Forms; 该实例的运行结果如下:,17.4 在字符串中定位字符和子字符串 许多应用程序需要在字符串搜索一个或者一系列字符。例

12、 如,字处理软件一般要提供搜索整篇文档的功能。本例是一个 名为 StringIndexMethods 的托管类控制台程序,该程序中演示了 String 类的 IndexOf、IndexOfAny、LastIndexOf 和 LastIndexOfAny 等 方法的调用方法和功能。这些方法的原型如下: int IndexOf( Char ); 用于在调用方法的 String 对象中,搜索指定字符,返回第一 次匹配字符的位置值。 int IndexOf( String );,用于在调用方法的 String 对象中,搜索指定子串,返回第一 次匹配子串的位置值。 int IndexOf( Char,

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

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

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

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

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

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

19、ring 对象中,从指定开始位置到指定结 束位置之间,搜索与指定字符数组中任意字符匹配的字符, 返回最后一次匹配字符的位置值。,本节实例 StringIndexMethods 也是一个托管类控制台程序,由 于程序需要使用了信息框类 MessageBox,所以需要添加使用该 类所属命名空间和相应动态库的语句: #using using namespace System:Windows:Forms;,实例的运行结果如下:,17.5 从字符串提取子字符串 String 类提供了两个不同版本的提取子字符串方法 Substring, 该方法的两个版本原型如下: String Substring( Int

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

21、 的其他方法 String 类还提供了几个方法,Replace、ToLower、ToUpper、 Trim 和 ToString 用于返回原始字符串的一个修改过的拷贝。这些 方法的原型如下: String Replace( Char, Char ); 用于将调用方法的 String 对象中所有由第一个参数指定的字 符替换为第二个参数指定的字符,并返回修改的 String 对象 拷贝的引用指针。 String Replace( String, String ); 用于将调用方法的 String 对象中所有由第一个参数指定的子,串替换为第二个参数指定的字串,并返回修改后的 String 对 象拷贝

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

23、String ToUpper( CultureInfo ); 依据参数指定的语言(例如,中文、英文等)规则,将调用方法的 String 对象中所有字符转换大写,并返回修改后的 String 对象拷贝的引用指针。 String Trim(); 用于删除调用方法的 String 对象中字符串头部和尾部的空格 字符,并返回修改后的 String 对象拷贝的引用指针。,String Trim( array ); 用于删除调用方法的 String 对象中字符串头部和尾部的所有 由字符数组中指定的字符,返回修改后的 String 对象拷贝的 引用指针。 String ToString(); 返回实际上未修

24、改的 String 对象拷贝的引用指针。 String ToString( IFormatProvider ); 依据指定的格式变换调用方法的 String 对象中字符串格式并 返回修改后的 String 对象拷贝的引用指针。,本节实例 StringMiscellaneous2 演示了如何使用这些方法,该实 例也是托管类控制台程序,由于程序需要使用了信息框类 MessageBox,所以需要添加使用该类所属命名空间和相应动态 库的语句: #using using namespace System:Windows:Forms;,实例的运行结果如下:,17.7 StringBuilder 类 Str

25、ing 类提供了许多字符串处理功能,但字符串内容永远不会 改变。换句话说,String 类只能创建和操纵 “不可变字符串”。例 如,使用 String 类的 Concat 方法进行字符串连接,实际上是创 建了一个新字符串,而被连接的字符串的内容并未发生变化。 定义在 System:Text 命名空间中的 StringBuilder 类用于创建和 操纵动态的字符串信息,即 “可变字符串” (Mutable String)。每 个 StringBuilder 类对象都能存储特定数量的字符,具体由它的 “容量”(Capacity)属性来指定。,扩展一个 StringBuilder 类对象的容量,就可

26、以在对象中存储更 多的字符。例如,可以 StringBuilder 类的 Append 和 AppendFormat 方法进行与 String 类的 Concat 方法相似的连接操作,但无须重 新创建一个字符串。 StringBuilder 类提供了 6 个重载的构造函数: StringBuilder(); 创建一个具有缺省容量的空字符串对象。 StringBuilder( Int32 ); 创建一个具有指定容量的空字符串对象。,StringBuilder( String ); 依据指定字符串,创建一个字符串。 StringBuilder( Int32, Int32 ); 创建一个指定容量,并

27、可扩容到指定最大容量的空字符串。 StringBuilder( String, Int32 ); 依据指定字符串和指定的建议容量,创建一个字符串。 StringBuilder( String, Int32, Int32, Int32 ); 依据指定的子串(第二个参数指定子串开始位置,第三个参 数指定子串长度)和指定的建议容量(第四个参数),创建 一个字符串。,本节实例 StringBuilderConstructor 也是一个托管类控制台程 序,该实例中使用了 StringBuilder 类的三个版本的构造函数创建 字符串对象。由于程序中使用了 StringBuilder 类和信息框类 Mes

28、sageBox,所以需要添加使用该类所属命名空间和相应动态 库的语句: #using using namespace System:Windows:Forms; using namespace System:Text;,实例的运行结果如下:,17.8 StringBuilder 类的属性 Length、Capacity 和方法 EnsureCapacity StringBuilder 类的 Length 和 Capacity 属性分别获取 StringBuilder 类对象当前的字符数,以及在不分配更多内存的前提下,该 StringBuilder 类对象最多能够存储的字符数。利用这些属性还能

29、增大或缩小 StringBuilder 类对象的长度和容量。 EnsureCapacity 方法可以确保一个 StringBuilder 类对象具有足够 的容量(使它大于或等于一个指定的值),从而有效地减少了 以后必须扩容的次数。该方法的原型如下: int EnsureCapacity( int );,如果指定值大于字符串的当前容量,则增大字符串容量大于 或等于指定值;否则不增容。 本节实例 StringBuilderFeatures 也是一个托管类控制台程序, 在实例中演示了对 StringBuilder 类的 Length 和 Capacity 属性以及 EnsureCapacity 方法

30、的使用。由于程序中使用了 StringBuilder 类和 信息框类 MessageBox,所以需要添加使用该类所属命名空间和 相应动态库的语句: #using using namespace System:Windows:Forms; using namespace System:Text;,该实例的运行结果如下:,17.9 StringBuilder 类的 Append 和 AppendFormat 方法 1 StringBuilder 类提供了 19 个重载版本的 Append 方法,允许将 各种数据类型值添加到一个 StringBuilder 类对象的末尾。 C+/CLI 针对每种基元

31、数据类型、字符数组、String 指针和 Object 指针 都提供了独立的 Append 方法版本。每种版本都将 参数传递的值转换成 String 对象,再把它追加到 StringBuilder 类对象的末尾。这两个方法的多个版本的原型如下: StringBuilder Append( Boolean ); 由参数指定的布尔数值的字串表达(String 类对象)被追加到 调用方法的字串实例(StringBuilder 类对象)尾部。,StringBuilder Append( Byte ); 由参数指定的 8 位无符号整数值的字串表达(String 类对象) 被追加到调用方法的字串实例(St

32、ringBuilder 类对象)尾部。 StringBuilder Append( Char ); 由参数指定的 Unicode 字符值的字串表达(String 类对象)被 追加到调用方法的字串实例(StringBuilder 类对象)尾部。 StringBuilder Append( Char ); 由参数指定的 Unicode 字符数组中的字符值的字串表达 (String 类对象)被追加到调用方法的字实例(StringBuilder 类 对象)尾部。,StringBuilder Append( Decimal ); 由参数指定的十进制整数数值的字串表达(String 类对象)被 追加到调用

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

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

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

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

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

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

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

40、ppendFormat( String, array ); 由最后一个参数指定的 Obeject 或派生的托管引用类数组中每 个对象的指定的格式字串表达(String 类对象)被追加到调用 方法的字串实例(StringBuilder 类对象)尾部。前面的参数指 定了托管引用类数组中每个对象的字串的格式。,本节的第二个实例 StringBuilderAppendFormat 也是一个托管类 控制台程序,该实例演示了对 StringBuilder 类的 AppendFormat 方 法的使用。由于程序中使用了 StringBuilder 类和信息框类 MessageBox,所以需要添加使用该类所属

41、命名空间和相应动态 库的语句: #using using namespace System:Windows:Forms; using namespace System:Text;,实例的运行结果如下:,17.10 StringBuilder 类的 Insert,Remove 和 Replace 方法 1 StringBuilder 类提供了 18 个重载版本的 Insert 方法,允许将各 种数据类型值对象或引用类型对象的字符串表达( String 类型对象)插入到一个 StringBuilder 类对象的任何指定位置。为此, StringBuilder 类为每种基元数据类型、字符数组、Str

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

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

44、法的字串实例 (StringBuilder 类对象)指定位置。第三参数指定了子字串的 开始位置,第四参数指定了子字串中的字符个数。,StringBuilder 类还提供了 Remove 方法,使用该方法能删除字符串的任何部分。该方法的原型如下: StringBuilder Remove( int, int ); 删除字串实例中从指定位置(第一参数指定)开始,指定个数(第二参数指定)字符,并返回修改后的字符串。,本节的第一个实例 StringBuilderInsertRemove 也是一个托管类控 制台程序,该实例演示了对 StringBuilder 类的 Insert 和 Remove 方 法

45、的使用。由于程序中使用了 StringBuilder 类和信息框类 MessageBox,所以需要添加使用该类所属命名空间和相应动态 库的语句: #using using namespace System:Windows:Forms; using namespace System:Text;,实 例的运行结果如下:,2 StringBuilder 类提供的 Replace 方法也非常有用。使用该方法能够搜索指定的字符串或字符,然后用另一个指定的字符串或字符来替换。该方法有 4 个版本,这些版本的原型: StringBuilder Replace( Char, Char ); 在字串实例中,用第

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

47、32, Int32 ); 在字串实例中,从指定的位置(第三参数给出)开始的确定长度(第四个参数给出)的子字串中,用第二个参数指定的字串替换所有由第一个参数指定的字串,并返回修改后的字串实例。,本节的第二个实例 StringBuilderReplace 也是一个托管类控制台 程序,该实例演示了对 StringBuilder 类的 Replace 方法的使用。 由于程序中使用了 StringBuilder 类和信息框类 MessageBox,所以 需要添加使用该类所属命名空间和相应动态库的语句: #using using namespace System:Windows:Forms; using

48、namespace System:Text;,实例的运行结果如下:,17.11 Char 类型的方法 Char 类型和其他基元数据类型一样,是 C+/CLI 提供的一种 结构数据类型。它提供的方法大多数是静态方法,这些方法至 少要获取一个字符参数,并对该字符执行一次测试或操作。对 这些方法的调用形式与对其他类型的方法调用形式相同。 本节的实例 StaticCharMethods 是一个托管类窗口程序,实例 的功能是:对用户从键盘输入的字符进行分析,并将分析结果 信息显示输出。为此,程序中使用了 Char 类型判断字符是否属 于特定字符类型的静态方法(IsDigit、IsLetter 等),以及

49、对字符 执行大小写转换的静态方法(ToUpper、ToLower 等)。,该实例的 GUI 设计如下:,实例的运行结果如下:,17.12 洗牌和发牌模拟实例 本节的实例是使用随机数生成技术设计、编写的一个模拟洗 牌和发牌的托管类窗口应用程序。该程序的设计思路和方法可 在模拟玩牌的其他应用程序中直接使用。 在程序设计中,Card 类是用来描述 “牌” 这个重要对象的 。该 类包含两个 String 数据成员,即用于存储 “牌” 的牌面名称的 face 和用于存储 “牌” 的花色名称的 suit。用于创建每张 “牌” 对 象的构造函数需要接收两个 String 参数,来初始化 face 和 suit 。 Card 类还包含一个 ToString 方法,用于创建由 face 和 suit 连接 构成的 String 对象,并返回该对象类型的引用指针 String。,在应用程序的主窗

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1