第10章 字符串和正则表达式

本章要点

● 创建字符串

● 格式化表达式

● 使用正则表达式

本章源代码下载地址(wrox.com):

打开网页http://www.wrox.com/go/professionalcsharp6,单击Download Code选项卡即可下载本章源代码。本章代码分为以下几个主要的示例文件:

● StringSample

● StringFormats

● RegularExpressionPlayground

从本书一开始,我们就在使用字符串,因为每个程序都需要字符串。但读者可能没有意识到,在C#中string关键字的映射实际上指向.NET基类System.String。System.String是一个功能非常强大且用途广泛的基类,但它不是.NET库中唯一与字符串相关的类。本章首先复习一下System.String的特性,再介绍如何使用其他的.NET库类来处理字符串,特别是System.Text和System.Text.RegularExpressions名称空间中的类。本章主要介绍下述内容:

● 构建字符串——如果多次修改一个字符串,例如,创建一个长字符串,然后显示该字符串或将其传递给其他方法或应用程序,String类就会变得效率低下。对于这种情况,应使用另一个类System.Text.StringBuilder,因为它是专门为这种情况设计的。

● 格式化表达式——这些格式化表达式将用于后面几章中的Console.WriteLine()方法。格式化表达式使用两个有用的接口IFormatProvider和IFormattable来处理。在自己的类上实现这两个接口,实际上就可以定义自己的格式化序列,这样,Console.WriteLine()和类似的类就可以按指定的方式显示类的值。

● 正则表达式——.NET还提供了一些非常复杂的类来识别字符串,或从长字符串中提取满足某些复杂条件的子字符串。例如,找出字符串中所有重复出现的某个字符或一组字符,或者找出以s开头且至少包含一个n的所有单词,又或者找出遵循雇员ID或社会安全号码结构的字符串。虽然可以使用String类,编写方法来完成这类处理,但这类方法编写起来比较繁琐。而使用System.Text.RegularExpressions名称空间中的类就比较简单,System.Text. RegularExpressions专门用于完成这类处理。