第十七部分字符串字符和正则表达式教学课件.ppt
《第十七部分字符串字符和正则表达式教学课件.ppt》由会员分享,可在线阅读,更多相关《第十七部分字符串字符和正则表达式教学课件.ppt(103页珍藏版)》请在三一办公上搜索。
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,I
5、nt32);用有符号字节数组中指定位置开始的指定个数字节初始化创建的 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 等
7、价于 string1-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=gcne
8、w array(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 方法和=运算符这些方
9、法的原型:bool Equals(String,String);bool Equals(Object,Object);静态方法。用于比较两个指定字符串是否相等。bool Equals(String);bool Equals(Object);动态方法。用于比较该字符串对象是否与指定字符串相等。int CompareTo(Object);,动态方法。用于该对象与指定对象比较,并返回相关指示值。=是运算符方法,用于比较两个指定字符串。本章的实例 StringCompare 是一个托管类控制台程序,由于程序需要使用了信息框类 MessageBox,所以需要添加使用该类所属命名空间和相应动态库的语句:#
10、using using namespace System:Windows:Forms;,实例的运行结果如下:,2使用 StartsWith 和 EndsWith 方法这两个方法的原型:bool StartsWith(String);动态方法。用于比较调用该方法的字符串对象的开头部分是否与参数指定字符串相同。bool EndsWith(String);动态方法。用于比较调用该方法的字符串对象的结尾部分是否与参数指定字符串相同。本节的实例 StringStartEnd 也是一个托管类控制台程序,由于程序需要使用了信息框类 MessageBox,所以需要添加使用该类所属命名空间和相应动态库的语句:,
11、#using using namespace System:Windows:Forms;该实例的运行结果如下:,17.4在字符串中定位字符和子字符串许多应用程序需要在字符串搜索一个或者一系列字符。例如,字处理软件一般要提供搜索整篇文档的功能。本例是一个名为 StringIndexMethods 的托管类控制台程序,该程序中演示了String 类的 IndexOf、IndexOfAny、LastIndexOf 和 LastIndexOfAny 等方法的调用方法和功能。这些方法的原型如下:int IndexOf(Char);用于在调用方法的 String 对象中,搜索指定字符,返回第一次匹配字符的
12、位置值。int IndexOf(String);,用于在调用方法的 String 对象中,搜索指定子串,返回第一次匹配子串的位置值。int IndexOf(Char,Int32);用于在调用方法的 String 对象中,从指定位置开始,搜索指定字符,返回第一次匹配字符的位置值。int IndexOf(String,Int32);用于在调用方法的 String 对象中,从指定位置开始,搜索指定子串,返回第一次匹配子串的位置值。int IndexOf(String,StringComparison);用于在调用方法的 String 对象中,按指定搜索类型,搜索指定子串,返回第一次匹配子串的位置值。
13、,int IndexOf(Char,Int32,Int32);用于在调用方法的 String 对象中,从指定开始位置到指定结束位置之间,搜索指定字符,返回第一次匹配字符的位置值。int IndexOf(String,Int32,Int32);用于在调用方法的 String 对象中,从指定开始位置到指定结束位置之间,搜索指定子串,返回第一次匹配子串的位置值。int IndexOf(String,Int32,StringComparison);用于在调用方法的 String 对象中,从指定位置开始,按指定搜索类型,搜索指定子串,返回第一次匹配子串的位置值。,int IndexOf(String,I
14、nt32,Int32,StringComparison);用于在调用方法的 String 对象中,从指定开始位置到指定结束位置之间,按指定搜索类型,搜索指定子串,返回第一次匹配子串的位置值。int IndexOfAny(array);用于在调用方法的 String 对象中,搜索与指定字符数组中任意字符匹配的字符,返回第一次匹配字符的位置值。int IndexOfAny(array,Int32);用于在调用方法的 String 对象中,从指定位置开始,搜索与指定字符数组中任意字符匹配的字符,返回第一次匹配字符的位置值。,int IndexOfAny(array,Int32,Int32);用于在调
15、用方法的 String 对象中,从指定开始位置到指定结束位置之间,搜索与指定字符数组中任意字符匹配的字符,返回第一次匹配字符的位置值。int LastIndexOf(Char);用于在调用方法的 String 对象中,搜索指定字符,返回最后一次匹配字符的位置值。int LastIndexOf(String);用于在调用方法的 String 对象中,搜索指定的子串,返回最后一次匹配子串的位置值。,int LastIndexOf(Char,Int32);用于在调用方法的 String 对象中,从指定位置开始,搜索指定字符,返回最后一次匹配字符的位置值。int LastIndexOf(String,
16、Int32);用于在调用方法的 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 对象中,获取从指定位置开始的剩余子字符串,并返回该子字
19、符串拷贝的引用指针。String Substring(Int32,Int32);用于在调用方法的 String 对象中,获取从指定位置开始的指定长度的子字符串,并返回该子字符串拷贝的引用指针。实例 Substring 也是一个托管类控制台程序,由于程序需要使用了信息框类 MessageBox,所以需要添加使用该类所属命名空间和相应动态库的语句:,#using using namespace System:Windows:Forms;实例的运行结果如下:,17.6String 的其他方法String 类还提供了几个方法,Replace、ToLower、ToUpper、Trim 和 ToStrin
20、g 用于返回原始字符串的一个修改过的拷贝。这些方法的原型如下:String Replace(Char,Char);用于将调用方法的 String 对象中所有由第一个参数指定的字符替换为第二个参数指定的字符,并返回修改的 String 对象拷贝的引用指针。String Replace(String,String);用于将调用方法的 String 对象中所有由第一个参数指定的子,串替换为第二个参数指定的字串,并返回修改后的 String 对象拷贝的引用指针。String ToLower();依据当前的语言(例如,英文、法文等)缺省规则,将调用方法的 String 对象中所有字符转换小写,并返回修改
21、后的String 对象拷贝引用指针。String ToLower(CultureInfo);依据参数指定的语言(例如,英文、法文等)规则,将调用方法的 String 对象中所有字符转换小写,并返回修改后的 String 对象拷贝的引用指针。,String ToUpper();依据当前的语言(例如,英文、法文等)缺省规则,将调用方法的 String 对象中所有字符转换大写,并返回修改后的 String 对象拷贝的引用指针。String ToUpper(CultureInfo);依据参数指定的语言(例如,中文、英文等)规则,将调用方法的 String 对象中所有字符转换大写,并返回修改后的 Str
22、ing 对象拷贝的引用指针。String Trim();用于删除调用方法的 String 对象中字符串头部和尾部的空格字符,并返回修改后的 String 对象拷贝的引用指针。,String Trim(array);用于删除调用方法的 String 对象中字符串头部和尾部的所有由字符数组中指定的字符,返回修改后的 String 对象拷贝的引用指针。String ToString();返回实际上未修改的 String 对象拷贝的引用指针。String ToString(IFormatProvider);依据指定的格式变换调用方法的 String 对象中字符串格式并返回修改后的 String 对象拷
23、贝的引用指针。,本节实例 StringMiscellaneous2 演示了如何使用这些方法,该实例也是托管类控制台程序,由于程序需要使用了信息框类 MessageBox,所以需要添加使用该类所属命名空间和相应动态库的语句:#using using namespace System:Windows:Forms;,实例的运行结果如下:,17.7StringBuilder 类String 类提供了许多字符串处理功能,但字符串内容永远不会改变。换句话说,String 类只能创建和操纵“不可变字符串”。例如,使用 String 类的 Concat 方法进行字符串连接,实际上是创建了一个新字符串,而被连接
24、的字符串的内容并未发生变化。定义在 System:Text 命名空间中的 StringBuilder 类用于创建和操纵动态的字符串信息,即“可变字符串”(Mutable String)。每个 StringBuilder 类对象都能存储特定数量的字符,具体由它的“容量”(Capacity)属性来指定。,扩展一个 StringBuilder 类对象的容量,就可以在对象中存储更多的字符。例如,可以 StringBuilder 类的 Append 和 AppendFormat 方法进行与 String 类的 Concat 方法相似的连接操作,但无须重新创建一个字符串。StringBuilder 类提供
25、了 6 个重载的构造函数:StringBuilder();创建一个具有缺省容量的空字符串对象。StringBuilder(Int32);创建一个具有指定容量的空字符串对象。,StringBuilder(String);依据指定字符串,创建一个字符串。StringBuilder(Int32,Int32);创建一个指定容量,并可扩容到指定最大容量的空字符串。StringBuilder(String,Int32);依据指定字符串和指定的建议容量,创建一个字符串。StringBuilder(String,Int32,Int32,Int32);依据指定的子串(第二个参数指定子串开始位置,第三个参数指定子
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第十七 部分 字符串 字符 正则 表达式 教学 课件
链接地址:https://www.31ppt.com/p-2111396.html