内容简介文本操作几乎存在于任何应用程序中,合理地处理文本可以提高应用程序的性能。本书以大量的篇幅介绍了VB.NET中的文本处理,如文本的存储,文本的替换和追加等。书中详细地比较了各种文本操作方法的优劣和快慢,能帮助您在应用程序中从容选择使用最恰当的方法。本书用浅显的语言重点讲述了.NET Framework处理字符串的最重要的工具之一——正则表达式,并介绍了如何构建自己的表达式用于匹配和操作文本。本书讲解实用生动,书中的大量代码可以直接用于您的应用程序中。本书适合从事.NET开发并想在应用程序中提高文本处理效率的开发人员阅读。Francois Liger,Craig McQueen,Paul Wilton:Visual Basic .NET Text Manipulation HandbookEISBN:1-86100-730-2Copyright?2002 by Wrox Press Ltd.Authorized translation from the English language edition published by Wrox Press Ltd.All rights reserved.For sale in the People's Republic of China only.Chinese simplified language edition published by Tsinghua University Press.本书中文简体字版由英国乐思出版公司授权清华大学出版社出版。未经出版者书面许可,不得以任何方式复制或抄袭本书内容。
前言 按照Wrox的定义,文本操作是处理代码中的文本的过程。它不仅意味着在字符串中追加文本或替换文本,还包括在String类型中储存文本,以及在各种数据类型之间进行转换所使用的各种技术。创建的任何应用程序都有可能在执行过程的某个点处理文本,即使这种处理只是在一个Console.Write()语句中将一个整数的字符串表示追加到文本中。.NET Framework已经为开发人员提供了许多不同的数据类型和操作文本的方法。 本书主要讲述.NET Framework如何处理文本,存储文本的不同方式,修改字符串的结果是什么,为什么需要一个单独的StringBuilder类,.NET Framework把所有文本都存储在Unicode中的意义是什么。本书也讲解实现,同时解释各种可用的方法,比较它们的性能,以便读者在选择操作文本的方式时可以做出更好的选择。VB6过去把所有的文本存储为变体,使用户几乎无法控制文本的处理方式,所以包含许多文本的VB应用程序经常在性能上大打折扣。Visual Basic.NET改变了这一切。虽然不像在C++中处理文本那样复杂,但通过面向对象的框架用户可以在代码中操作欲使用的文本。重要的是读者要理解.NET Framework处理文本的方式。 可以使用的一个最重要的处理字符串的新类是System.Text.RegularExpressions. Regex。这个类使所有的.NET Framework开发人员能够使用正则表达式提供的强大的模式匹配语言。“匹配”的意思是看一个字符串是否遵守一定的模式以及是否包含我们预期的数据。通常这要比给一个方法传递字符串,然后捕捉一个异常(用无效数据更新数据库时发生的异常)更有效一些。语法的神秘一直是VB开发人员使用正则表达式的一个障碍,这些语法对普通人来说和要匹配的文本似乎没有什么关系。但在本书的第5到第7章,我们将指导您学习正则表达式的语言,解释每个组成部分的含义,并教您如何构建复杂的表达式以匹配文本中更复杂的模式。 没有正则表达式,即使是检查是否正确输入了电子邮件地址这样简单的任务也会耗费很多行代码。如果假设电子邮件地址已经存放在myInput变量中,可以用下面这一行代码生成一个布尔值,指明是否进行了成功的匹配: bIsMatch = Regex.IsMatch(myInput, _ "^[a-z](\w|\d|[-.])+@([a-z\d-]+\.)+[a-z]{2,4}$", _ RegexOptions.IgnoreCase) 这看起来非常深奥,但您读完本书后,会发现它非常简明。为了简便,这个表达式没有对myInput变量做足够的限制(第7章会这样做的),但它确实指定了下面的模式:地址必须以字母开始,后面跟一个或多个字母,下划线,数字,连字符或句点,也可以是它们的组合,然后是“@”,它后面是一个字母的一个或多个模式,再后面是一个或多个字母、数字或连字符的可能重复的模式(后跟一个句点),并以一个2到4个字母的模式结束。Support@会匹配,但support@wrox不会匹配。 如果您有兴趣了解如何将该表达式语言用于Visual Basic .NET代码,那么本书的作者会带领您学习这种模式匹配语言,因为他们对该语言和VB本身都有丰富的经验。 本书读者 本系列的所有图书都以使用Visual Basic .NET进行开发的人员为对象,他们需要学习更多的东西才能完成具体的任务。本书也是如此,任何在应用程序中使用文本的开发人员(每个开发人员都会使用文本)都是本书的适用对象。本书代码的运行环境为Visual Basic .NET Standard Edition或更高的版本,但以前使用的代码和概念只适用于并只运行于.NET Framework SDK。 内容提要 本书讲解了处理文本的各种方法。下面是各章内容的介绍。 第1章 系统处理文本的方式 本章解释.NET Framework处理文本的方式。它讲述了各种较基础的内容,如字符串如何在内存中存储。在解释了文本的存储方式后,读者会明白为什么考虑处理文本的方法是很重要的。本章会介绍一些MSIL,但基本上是关于文本的概述,说明.NET中内存的处理和管理(因此还有字符串占用内存的持续时间)。 第2章 String和StringBuilder类 本章将详述String类,解释.NET中如何实现字符串。还将讲解StringBuilder类的工作原理并比较这两个类的不同方法,了解执行某种操作的最快的方法是什么。学习Microsoft提供的共享源代码的CLI实现,以期了解不同方法快慢的原因,在什么环境下使用看起来慢一些的方法更合适。 第3章 字符串转换 本章讲述字符串和其他数据类型之间的转换所涉及的问题。讨论不同的区域如何以不同方式表示不同的数据类型,如数字,日期/时间,以及如何处理这些情况。我们还会探讨在数组和集合中存储字符串的问题,以及如何最好地操作以这种方式存储的字符串。 第4章 国际化 .NET Framework中所有的文本都以16位的Unicode编码存放。本章对此进行了说明并告诉您面对现在的字符至少以16位存储这样的事实该采取什么措施。我们详细地讲述区域和针对不同区域表示文本的方法,还将讲解如何操作Char类型,因为在Unicode中,一个完整的字符可以由两个16位的Char类型组成。本章会告诉您如何在不同语言中显示文本。 第5章 正则表达式 本章为您介绍正则表达式匹配语言,如何使用正则表达式匹配文本模式。首先教读者如何完成使用String类的方法也能完成的相同工作,但您熟悉了语法后,我们会讲述该语言的一些独特的功能。我们还将带您创建一个Regular Expression Tester,它是测试表达式的一个非常有用的工具。 第6章 正则表达式的高级概念 本章除了列举更多的表达式示例外,还将描述分组、替换和反向引用。分组允许表达式匹配成组的文本。这些组可以被捕获并赋予名称。反向引用可以用来提取前面的匹配,例如,可以为一个HTML结束标记匹配它对应的开始标记。 第7章 正则表达式模式 本章详细介绍各种正则表达式模式,它们用来匹配具体的数据类型,如成员,日期等。我们讲解这些模式的构成方式,因此能帮助读者构建自己的模式。其中一个模式是电子邮件地址验证程序,这是一个又长又复杂的表达式,用途很大,但经过讲解读者就会明白构建匹配许多文本模式的表达式是何等的简单。 附录 本书有4个附录。前两个附录用表格列出String和StringBuilder类的方法、属性和构造函数。第三个附录包含了很多正则表达式语法,选项和特殊的字符。最后一个附录是本书的支持信息和下载代码的信息。 下载代码 和Wrox的所有图书一样,本书包含的代码也可从Wrox的Web站点下载。但除了书中提到的技术以外,我还提供了一个程序集Wrox.Text.dll,它包含了本书中很多有用的方法、属性和枚举,它们可以用于读者将来的工作中。通过把这些内容导入读者的应用程序,就可以立即使用本书讨论的许多有用的模式和方法。所有的类都包含在Wrox.Text命名空间中。