代码下载
引言
在通常的程序设计中,对字符串的操作是不可缺少的部分。例如,我们经常需要从字符串中寻找特定的部分,或者对某一部分进行替换、删除等等。使用传统的静态字符串操作方法只能查找字符串中固定不变的部分,缺乏灵活性。而用正则表达式则可以规定待查找字符串的模式,查找同一类型的字符串,例如要在email)中分解出用户名和服务器名,可以定义如下的正则表达式(?<user>[^@]+)@(?<host>.+)组和host组里存储用户名lzcarl组里存放服务器名126.com2、
在vb.net,该命名空间包含一下七个类:regex、matchcollection、capturecollection、captureregex类表示正则表达式匹配操作的结果。matchcollection 首先生成一个Regex类的实例,并在传入参数中输入正则表达式的模式,然后使用Regex类的相应方法,如IsMatch(判断是否
匹配)、match类的共享方法而不实例化regex、match中正则表达式的应用。
3、时间解析程序
该程序读取用户输入的时间长度字符串(如xx分钟xx秒)。程序界面如下:
当用户在文本框中输入时间值后,点计算后就会在“结果”后面得到用秒表示的时间值。
该程序首先从文本框中读入时间值,然后分别查找其中的小时、分钟、秒部分,在这里就使用了正则表达式对时间表达式进行解析。如小时数的正则表达式可表示为“[0-9]+小时”。“[0-9]”表示0到9间的任意数字都可以被匹配,“+”表示该字符可以出现一次或更多,因此“[0-9]+”即可以匹配任意长度整数(关于正则表达式的语法可以参见msdn的相应部分),用这个字符串模式就可以查找出表达式中的小时部分。在分别匹配得到小时数、分钟数和秒数后计算得到总的秒数,并显示在“结果”后面。
程序包括一个计算时间的正则表达式工具类timeregex界面类。
timeregex类代码如下:
Imports System.Text.RegularExpressions
Public Class TimeRegex
Private hour As Integer = 0
Private minute As Integer = 0
Private second As Integer = 0
Private totalTime As Integer = 0
Private exp As String '时间表达式
Sub New()
End Sub
'根据时间文本解析出其中的数字部分
Private Function getTime(ByVal timeKind As String) As String
Dim timeMatch As Match
Dim time As String
'先从中解析出包含数字和中文的部分
timeMatch = Regex.Match(exp, timeKind)
If timeMatch.Success = True Then
time = timeMatch.Value
'然后从得到的文本中解析出数字
Return Regex.Match(time, "[0-9]+").Value
Else
Return "0"
End If
End Function
'根据传入的表达式计算总时间
Public Function getTotalTime(ByVal _exp As String) As Integer
exp = _exp
'分别计算出小时,分钟,秒,然后得到总时间
hour = Integer.Parse(getTime("[0-9]+小时"))
minute = Integer.Parse(getTime("[0-9]+分钟"))
second = Integer.Parse(getTime("[0-9]+秒"))
totalTime = hour * 3600 + minute * 60 + second
Return totalTime
End Function
End Class
Form1类代码如下:
Public Class Form1
Inherits System.Windows.Forms.Form
Private regex As New TimeRegex
Windows窗体设计器生成代码省略
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
SecondTime.Text = regex.getTotalTime
(timeExp.Text).ToString & "秒"
End Sub
End Class
用户输入1分钟1秒,证明结果正确。
4、结论
合理的使用正则表达式对于简化程序代码、提高程序的复用性与健壮性有着很大的帮助。可以说正则表达式是程序员必须掌握的几种武器之一。而.net
文档说明:
相关文档
返回首页 | 关于本站 | | 友情链接 | 广告服务 | 意见建议 | 访客留言 | 本站论坛
Copyright© 2001-2006 ProgramBBS.com All Rights Reserved 版权所有©编程论坛
Email: 吉ICP备05009985号
感谢长春订餐网友情支持