溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

VB.NET正則表達(dá)式如何簡(jiǎn)化程序代碼

發(fā)布時(shí)間:2021-12-02 14:52:58 來(lái)源:億速云 閱讀:148 作者:小新 欄目:編程語(yǔ)言

小編給大家分享一下VB.NET正則表達(dá)式如何簡(jiǎn)化程序代碼,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

1、VB.NET正則表達(dá)式處理類
在VB.NET正則表達(dá)式必須先引入命名空間System.Text.RegularExpressions,該命名空間包含一下七個(gè)類:Regex、Match、MatchCollection、GroupCollection、CaptureCollection、Group、Capture。

Regex類表示不可變(只讀)正則表達(dá)式類,設(shè)置待匹配字符串的模式。Match 類表示正則表達(dá)式匹配操作的結(jié)果。MatchCollection 類表示成功的非重疊匹配的序列,即匹配后得到的字符串集合。在正則表達(dá)式中應(yīng)用最多的就是這三個(gè)類。

使用正則表達(dá)式類的通用方法是:
首先生成一個(gè)Regex類的實(shí)例,并在傳入?yún)?shù)中輸入正則表達(dá)式的模式,然后使用Regex類的相應(yīng)方法,如IsMatch(判斷是否匹配)、Match(返回匹配得到的字符串)等等。
當(dāng)然也可以使用Regex類的共享方法而不實(shí)例化Regex類——IsMatch、Match等等(即上述方法的共享版本)獲得所需要的結(jié)果。這種方法適于匹配模式不固定,匹配次數(shù)不多的情況。
接下來(lái)給出一個(gè)VB.NET中正則表達(dá)式的應(yīng)用。

2、時(shí)間解析程序
該程序讀取用戶輸入的時(shí)間長(zhǎng)度字符串(如XX小時(shí)XX分鐘XX秒),把它解析,***用秒表示該時(shí)間長(zhǎng)度(XX秒)。程序界面如下:

當(dāng)用戶在文本框中輸入時(shí)間值后,點(diǎn)計(jì)算后就會(huì)在“結(jié)果”后面得到用秒表示的時(shí)間值。該程序首先從文本框中讀入時(shí)間值,然后分別查找其中的小時(shí)、分鐘、秒部分,在這里就使用了正則表達(dá)式對(duì)時(shí)間表達(dá)式進(jìn)行解析。如小時(shí)數(shù)的正則表達(dá)式可表示為“[0-9]+小時(shí)”?!癧0-9]”表示0到9間的任意數(shù)字都可以被匹配,“+”表示該字符可以出現(xiàn)一次或更多,因此“[0-9]+”即可以匹配任意長(zhǎng)度整數(shù)(關(guān)于正則表達(dá)式的語(yǔ)法可以參見MSDN的相應(yīng)部分),用這個(gè)字符串模式就可以查找出表達(dá)式中的小時(shí)部分。在分別匹配得到小時(shí)數(shù)、分鐘數(shù)和秒數(shù)后計(jì)算得到總的秒數(shù),并顯示在“結(jié)果”后面。
程序包括一個(gè)計(jì)算時(shí)間的正則表達(dá)式工具類TimeRegex,及Form1界面類。

TimeRegex類代碼如下:

ImportsSystem.Text.RegularExpressions  PublicClassTimeRegex  PrivatehourAsInteger=0 PrivateminuteAsInteger=0 PrivatesecondAsInteger=0 PrivatetotalTimeAsInteger=0 PrivateexpAsString'時(shí)間表達(dá)式   SubNew()  EndSub   '根據(jù)時(shí)間文本解析出其中的數(shù)字部分  PrivateFunctiongetTime(ByValtimeKindAsString)AsString  DimtimeMatchAsMatch  DimtimeAsString  '先從中解析出包含數(shù)字和中文的部分  timeMatch=Regex.Match(exp,timeKind)  IftimeMatch.Success=TrueThen time=timeMatch.Value  '然后從得到的文本中解析出數(shù)字  ReturnRegex.Match(time,"[0-9]+").Value  Else  Return"0"  EndIf  EndFunction   '根據(jù)傳入的表達(dá)式計(jì)算總時(shí)間  PublicFunctiongetTotalTime(ByVal_expAsString)AsInteger  exp=_exp '分別計(jì)算出小時(shí),分鐘,秒,然后得到總時(shí)間  hour=Integer.Parse(getTime("[0-9]+小時(shí)"))  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窗體設(shè)計(jì)器生成代碼省略   PrivateSubButton1_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton1.Click  SecondTime.Text=regex.getTotalTime  (timeExp.Text).ToString&"秒"  EndSub  EndClass

以上是“VB.NET正則表達(dá)式如何簡(jiǎn)化程序代碼”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI