許多程序設(shè)計語言都支持利用正則表達式進行字符串操作,基本都是直接內(nèi)置,直接使用,而我們的vb6太老了,沒有內(nèi)建封裝,只能通過第三方組件來使用,總結(jié)了下不外乎下面3種方法。
方法一:使用CreateObject("VBSCRIPT.REGEXP"),這是最常用的,與vb最融洽。范例:
- Private Sub Command1_Click()
- Dim reg As Object, s As String
- Dim match As Object, matchs As Object
- Set reg = CreateObject("vbscript.regExp")
- reg.Global = True
- reg.Pattern = "href='(.*?)'" '獲取html中a標簽中的網(wǎng)址
- Set matchs = reg.Execute("<a href='baidu.com'>baidu</a>")
- For Each match In matchs
- Debug.Print match.submatches(0)
- Next
- End Sub
方法二:CreateObject("ScriptControl"),這個實際是調(diào)用JavaScript中的正則功能,不如上面的好用,獲取值的話比較麻煩,不過要是只用replace還行,比較方便,比如下面的范例“刪除非數(shù)字部分,只保留數(shù)字”:
- Private Sub Command1_Click()
- Dim sc As Object, s As String
- Set sc = CreateObject("ScriptControl")
- sc.Language = "JavaScript"
- s = sc.Eval("'BCJT100116660013555022CCR5'.replace(/[^1-4]/g,'');")
- MsgBox s
- End Sub
方法三:通過webbrowser,這個不常用使用也不方便,本質(zhì)還是通過調(diào)用JavaScript的正則功能。需要引入一個webbrowser控件,然后用它的WebBrowser1.Document.parentWindow.ExecScript方法。
如果在你的程序中本身就需要用到webbrowser而不是為了用正則專門加入這個控件的情況下還是可以的,專門為了用正則而去引入一個webbrowser控件是不可取的。有時我們需要操作webbrowser中的一些的元素其實都可以直接在ExecScript方法中完成的,不用與vb交互。如果需要與vb交互得創(chuàng)建個js中間變量。例如下的范例“刪除非數(shù)字部分,只保留數(shù)字”:
- Private Sub Command1_Click()
- WebBrowser1.Navigate "about:blank" '載入文本對象,不然下面無法使用Document對象
- WebBrowser1.Document.parentWindow.ExecScript "var s='BCJT100116660013555022CCR5'.replace(/[^1-4]/g,'');"
- MsgBox WebBrowser1.Document.Script.s
- End Sub
天啊,竟然這么短。可是如果就簡單處理下字符要引入個對象就有點濫用了,還得看實際情況看使用場景。方法四(贈品):通過調(diào)用外部程序mshta。嚴格來說這不是vb的了,因為值沒有辦法傳遞到vb里,只是顯示值而已。
Shell "mshta javascript:alert('BCJT100116660013555022CCR5'.replace(/[^1-4]/g,''));close()"
聯(lián)系客服