资源预览内容
第1页 / 共103页
第2页 / 共103页
第3页 / 共103页
第4页 / 共103页
第5页 / 共103页
第6页 / 共103页
第7页 / 共103页
第8页 / 共103页
第9页 / 共103页
第10页 / 共103页
亲,该文档总共103页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
第十七章 字符串、字符和正则表达式,本章的学习内容包括三个方面: 1创建和操纵 String 类的不可变字符串对象。 2创建和操纵 StringBuilder 类的可变字符串对象。 3结合 Regex 类和 Match 类来使用正则表达式。,前面我们已经多次接触到 String 类的使用,本章将通过实例 详细介绍定义在 System 命名空间中的 String 类型和 Char 结构类 型的创建和操纵方法。 可变字符串类 StringBuilder 是定义在命名空间 System:Text 中 的,本章也将通过实例详细介绍使用 StringBuilder 创建和操纵的 字符串与 String 类字符串的相同之处和存在的差异。 正则表达式是具有特殊格式的字符串,用来创建特定的字符 串格式以便构造符合格式的字符串或识别已有字符串是否指定 的格式。创建和操纵正则表达式的 Regex 和 Match 类型是定义 在 System:Text:RegularExpression 命名空间中的,本章还将通过 实例介绍正则表达式的使用。,17.1 String 的创建 字符串是程序的重要组成元素,C+/CLI 程序中的字符串是根 据 “Unicode 字符集” 来建立的。Unicode 是一种国际字符集包含 了比 ASCII 字符集多得多的符号和字母。 字符串是被视为一个整体的一系列字符。在 C+/CLI 中,字符 串是 String 类的一个对象。是托管引用类型,所以托管类程序中 通常使用 String 指针来操纵 String 类对象。 在 C+/CLI 中,String 类直接量的表示方式有两种。例如: String color = “bulue”;/ 标准 C+ 字符串类型直接量 String color = L“bulue”;/ 托管字符串类型直接量,String( SByte ); 用有符号字节数组中的内容初始化创建的 String 类对象。 String( Char, Int32 ); 用指定个数的 Unicode 字符初始化创建的 String 类对象。 String( Char, Int32, Int32 ); 用字符数组中指定位置开始的指定个数 Unicode 字符初始化创 建的 String 类对象。 String( array, Int32, Int32 ); 同上。 String( SByte, Int32, Int32 ); 用有符号字节数组中指定位置开始的指定个数字节初始化 创建的 String 类对象。,String( SByte, Int32, Int32, Encoding ); 用有符号字节数组中指定位置开始的指定个数字节和一个 Encoding (编码)类对象初始化创建的String 类对象。 注意,本章实例 StringConstructor 中用托管数组 characterArray 定义、创建和初始化一个字符串的代码: array characterArray = gcnew array b,i,r,t,h,d,a,y ; 另外,由于程序需要使用了信息框类 MessageBox,所以需要 添加使用该类所属命名空间和相应动态库的语句: #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 等价于 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 = gcnew 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 方法和 = 运算符 这些方法的原型: bool Equals( String, String ); bool Equals( Object, Object ); 静态方法。用于比较两个指定字符串是否相等。 bool Equals( String ); bool Equals( Object ); 动态方法。用于比较该字符串对象是否与指定字符串相等。 int CompareTo ( Object );,动态方法。用于该对象与指定对象比较,并返回相关指示值。 = 是运算符方法,用于比较两个指定字符串。 本章的实例 StringCompare 是一个托管类控制台程序,由于程 序需要使用了信息框类 MessageBox,所以需要添加使用该类所 属命名空间和相应动态库的语句: #using using namespace System:Windows:Forms;,实例的运行结果如下:,2使用 StartsWith 和 EndsWith 方法 这两个方法的原型: bool StartsWith( String ); 动态方法。用于比较调用该方法的字符串对象的开头部分是 否与参数指定字符串相同。 bool EndsWith( String ); 动态方法。用于比较调用该方法的字符串对象的结尾部分是 否与参数指定字符串相同。 本节的实例 StringStartEnd 也是一个托管类控制台程序,由于 程序需要使用了信息框类 MessageBox,所以需要添加使用该类 所属命名空间和相应动态库的语句:,#using using namespace System:Windows:Forms; 该实例的运行结果如下:,17.4在字符串中定位字符和子字符串 许多应用程序需要在字符串搜索一个或者一系列字符。例 如,字处理软件一般要提供搜索整篇文档的功能。本例是一个 名为 StringIndexMethods 的托管类控制台程序,该程序中演示了 String 类的 IndexOf、IndexOfAny、LastIndexOf 和 LastIndexOfAny 等 方法的调用方法和功能。这些方法的原型如下: int IndexOf( Char ); 用于在调用方法的 String 对象中,搜索指定字符,返回第一 次匹配字符的位置值。 int IndexOf( String );,用于在调用方法的 String 对象中,搜索指定子串,返回第一 次匹配子串的位置值。 int IndexOf( Char, Int32 ); 用于在调用方法的 String 对象中,从指定位置开始,搜索指 定字符,返回第一次匹配字符的位置值。 int IndexOf( String, Int32 ); 用于在调用方法的 String 对象中,从指定位置开始,搜索指 定子串,返回第一次匹配子串的位置值。 int IndexOf( String, StringComparison ); 用于在调用方法的 String 对象中,按指定搜索类型,搜索指 定子串,返回第一次匹配子串的位置值。,int IndexOf( Char, Int32, Int32 ); 用于在调用方法的 String 对象中,从指定开始位置到指定结 束位置之间,搜索指定字符,返回第一次匹配字符的位置值。 int IndexOf( String, Int32, Int32 ); 用于在调用方法的 String 对象中,从指定开始位置到指定结 束位置之间,搜索指定子串,返回第一次匹配子串的位置值。 int IndexOf( String, Int32, StringComparison ); 用于在调用方法的 String 对象中,从指定位置开始,按指定 搜索类型,搜索指定子串,返回第一次匹配子串的位置值。,int IndexOf( String, Int32, Int32, StringComparison ); 用于在调用方法的 String 对象中,从指定开始位置到指定结 束位置之间,按指定搜索类型,搜索指定子串,返回第一次 匹配子串的位置值。 int IndexOfAny( array ); 用于在调用方法的 String 对象中,搜索与指定字符数组中任 意字符匹配的字符,返回第一次匹配字符的位置值。 int IndexOfAny( array, Int32 ); 用于在调用方法的 String 对象中,从指定位置开始,搜索与 指定字符数组中任意字符匹配的字符,返回第一次匹配字符的位置值。,int IndexOfAny( array, Int32, Int32 ); 用于在调用方法的 String 对象中,从指定开始位置到指定结 束位置之间,搜索与指定字符数组中任意字符匹配的字符, 返回第一次匹配字符的位置值。 int LastIndexOf( Char ); 用于在调用方法的 String 对象中,搜索指定字符,返回最后 一次匹配字符的位置值。 int LastIndexOf( String ); 用于在调用方法的 String 对象中,搜索指定的子串,返回最 后一次匹配子串的位置值。,int LastIndexOf( Char, Int32 ); 用于在调用方法的 String 对象中,从指定位置开始,搜索指 定字符,返回最后一次匹配字符的位置值。 int LastIndexOf( String, Int32 ); 用于在调用方法的 String 对象中,从指定位置开始,搜索指 定子串,返回最后一次匹配子串的位置值。 int LastIndexOf( String, StringComparison ); 用于在调用方法的 String 对象中,按指定搜索类型,搜索指 定子串,返回最后一次匹配子串的位置值。,int LastIndexOf( Char, Int32, Int32 ); 用于在调用方法的 String 对象中,从指定开始位置到指定结 束位置之间,搜索指定字符,返回最后一次匹配字符的位置 值。 int LastIndexOf( String, Int32, Int32 ); 用于在调用方法的 String 对象中,从指定开始位置到指定结 束位置之间,搜索指定子串,返回最后一次匹配子串的位置 值。 int LastIndexOfAny( array ); 用于在调用方法的 String 对象中,搜索与指定字符数组中任 意字符匹配的字符,返回最后
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号