理解VC# 2005中的字符串和正规表达式
不管创建什么类型的应用程序,你都需要使用字符串。无论数据如何存储,终端用户总要与可读的文本打交道。因此,了解如何使用字符串是任何.NET开发者创建丰富的应用程序所需要学习的必要知识。除了向你展示在.NET框架中字符串的使用外,本文还将向你介绍正规表达式的知识。
除了向你展示如何使用.NET框架中的字符串外,本文还将向你介绍正规表达式。正规表达式是格式代码,不仅允许你验证一个特定字符串匹配一个给定的格式,而且你还可以使用正规表达式来从任何其它可能被认为是自由格式的文本中提取有意义的信息,例如从用户输入中提取第一个名字,或从一个数字输入中提取代码,或从一个URL中提取服务器名。
一、 使用字符串
使用字符串是创建高质量应用程序的一个必要的技巧。即使你在处理数字或图像数据,终端用户也需要上下文反馈。本文将向你介绍.NET字符串,如何格式它们,操作它们和比较它们,及其它有用的操作。
(一) .NET字符串简介
在.NET框架和通用语言运行时刻(CLR)以前,开发者总是花费大量时间处理字符串。一个字符串例程可重用库几乎是每一个C和C++程序员的工具箱中的一部分。编写在不同程序语言之间交换字符串数据的代码也是相当困难的。例如,Pascal把字符串存储为一个内存字符数组,其中,该数组的第一个元素指示字符串的长度;而C把字符串存储为一个具有可变长度的字符内存数组,字符串的末端加上一个ASCII null字符(在C中以"\0"表示)。
在.NET框架中,字符串以常量方式存储。这意味着,当你用C#(或任何其它.NET语言)创建一个字符串时,该字符串以一种固定大小存储在内存以便CLR运行更快些。结果是,当你实现例如连接字符串或修改一个字符串中的单个字符时,CLR实际上是创建你的字符串的多个副本。
C#中的字符串与其它值类型例如整数或浮点数声明方式相同,见下面的例子:
string x = "Hello World"; string y; string z = x; |
(二) 格式化字符串
当使用字符串时最常见的一项任务是格式化字符串。当向用户显示信息时,你经常显示如日期,时间,数字值,十进制值,货币值,甚至象十六进制数字这样的内容。C#字符串都能够显示这些类型的信息,甚至更多。另外一个强有力的特征是,当你使用该标准格式化工具时,该格式化的输出具有地区感知特征。例如,如果你以短格式显示一个英格兰用户的当前日期,那么对于一个美国用户来说,当前日期的短格式将以不同形式显示。
为了创建一个格式化的字符串,你仅需要调用string类的Format方法,并且传递给它一个格式字符串,如下列代码所显示的:
string formatted = string.Format("The value is {0}", value); |
在此,{0}占位符指示一个值应该被插入的位置。除了指定一个值应该被插入的位置外,你还可以指定该值的格式。
其它数据类型还支持经由定制格式修饰符转换成字符串,例如,DateTime数据类型,通过使用如下方式,它能够产生一种定制格式的输出:
DateTime.ToString("format specifiers"); |
表格1列举了用于格式化日期,时间,数字值等数据的一些最常用的格式字符串。
表格1.定制DateTime格式修饰符
修饰符 | 描述 |
d | 显示某月中的这一天。 |
dd | 显示某月中的这一天,其中,小于10的值之前加上一个0。 |
ddd | 显示一个星期中某一天的三字母缩写名。 |
dddd(+) | 显示给定的DateTime值中星期中的一天的完整名。 |
f(+) | 显示秒值的最重要的x位数。在f中格式修饰符位数越多,该数字越重要。这是个总秒数,而不是从上个分钟以来经过的秒数。 |
F(+) | 与f(+)相同,除了不显示末尾的零外。 |
g | 显示一个给定的DateTime中的时代,例如,"A.D"。 |
h | 显示小时,范围为:1~12。 |
hh | 显示小时,范围为:1~12,其中,小于10的值之前加上一个0。 |
H | 显示小时范围为:0~23。 |
HH | 显示小时范围为:0~23,其中,小于10的值之前加上一个0。 |
m | 显示分钟,范围为0~59。 |
mm | 显示分钟,范围为0~59,其中,小于10的值之前加上一个0。 |
M | 显示月份,范围为1~12。 |
MM | 显示月份,范围为1~12,其中,小于10的值之前加上一个0。 |
MMM | 显示月份的三字符缩略名。 |
MMMM | 显示月份的完整名字。 |
s | 显示秒数范围为:0~59。 |
ss(+) | 显示秒数范围为:0~59,其中,小于10的值之前加上一个0。 |
t | 显示给定的时间中AM/PM指示器中的第一个字符。 |
tt(+) | 显示给定的时间中完整的AM/PM指示器。 |
y/yy/yyyy | 显示给定的时间中的年份。 |
z/zz/zzz(+) | 显示给定的时间中的时区偏移量。 |
让我们观察下列代码,它展示使用字符串格式修饰符创建定制格式的日期和时间字符串:
天极yesky