概述VB.NET正则表达式简化程序代码
1、VB.NET正則表達式處理類
在VB.NET正則表達式必須先引入命名空間System.Text.RegularExpressions,該命名空間包含一下七個類:Regex、Match、MatchCollection、GroupCollection、CaptureCollection、Group、Capture。
Regex類表示不可變(只讀)正則表達式類,設置待匹配字符串的模式。Match 類表示正則表達式匹配操作的結果。MatchCollection 類表示成功的非重疊匹配的序列,即匹配后得到的字符串集合。在正則表達式中應用最多的就是這三個類。
使用正則表達式類的通用方法是:
首先生成一個Regex類的實例,并在傳入參數中輸入正則表達式的模式,然后使用Regex類的相應方法,如IsMatch(判斷是否匹配)、Match(返回匹配得到的字符串)等等。
當然也可以使用Regex類的共享方法而不實例化Regex類——IsMatch、Match等等(即上述方法的共享版本)獲得所需要的結果。這種方法適于匹配模式不固定,匹配次數不多的情況。
接下來給出一個VB.NET中正則表達式的應用。
2、時間解析程序
該程序讀取用戶輸入的時間長度字符串(如XX小時XX分鐘XX秒),把它解析,最后用秒表示該時間長度(XX秒)。程序界面如下:
當用戶在文本框中輸入時間值后,點計算后就會在“結果”后面得到用秒表示的時間值。該程序首先從文本框中讀入時間值,然后分別查找其中的小時、分鐘、秒部分,在這里就使用了正則表達式對時間表達式進行解析。如小時數的正則表達式可表示為“[0-9]+小時”。“[0-9]”表示0到9間的任意數字都可以被匹配,“+”表示該字符可以出現一次或更多,因此“[0-9]+”即可以匹配任意長度整數(關于正則表達式的語法可以參見MSDN的相應部分),用這個字符串模式就可以查找出表達式中的小時部分。在分別匹配得到小時數、分鐘數和秒數后計算得到總的秒數,并顯示在“結果”后面。
程序包括一個計算時間的正則表達式工具類TimeRegex,及Form1界面類。
TimeRegex類代碼如下:
ImportsSystem.Text.RegularExpressions??? PublicClassTimeRegex??? PrivatehourAsInteger=0?? PrivateminuteAsInteger=0?? PrivatesecondAsInteger=0?? PrivatetotalTimeAsInteger=0?? PrivateexpAsString'時間表達式??? ? SubNew()??? EndSub??? ? '根據時間文本解析出其中的數字部分??? PrivateFunctiongetTime(ByValtimeKindAsString)AsString??? DimtimeMatchAsMatch??? DimtimeAsString??? '先從中解析出包含數字和中文的部分??? timeMatch=Regex.Match(exp,timeKind)??? IftimeMatch.Success=TrueThen?? time=timeMatch.Value??? '然后從得到的文本中解析出數字??? ReturnRegex.Match(time,"[0-9]+").Value??? Else??? Return"0"??? EndIf??? EndFunction??? ? '根據傳入的表達式計算總時間??? PublicFunctiongetTotalTime(ByVal_expAsString)AsInteger??? 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??? ReturntotalTime??? EndFunction??? EndClass??? ? Form1類代碼如下:??? PublicClassForm1??? InheritsSystem.Windows.Forms.Form??? PrivateregexAsNewTimeRegex??? ? Windows窗體設計器生成代碼省略??? ? PrivateSubButton1_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton1.Click??? SecondTime.Text=regex.getTotalTime??? (timeExp.Text).ToString&"秒"??? EndSub??? EndClass |
3、結論
合理的使用VB.NET正則表達式對于簡化程序代碼、提高程序的復用性與健壯性有著很大的幫助。可以說正則表達式是程序員必須掌握的幾種武器之一。而.NET中對正則表達式也有較好的支持,以后在處理字符串的時候,不妨使用一下正則表達式,一定可以起到事半功倍的效果。
轉載于:https://www.cnblogs.com/NetPig/archive/2011/07/26/2117309.html
總結
以上是生活随笔為你收集整理的概述VB.NET正则表达式简化程序代码的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: POJ 3580 SuperMemo
- 下一篇: IKE介绍