本帖最后由 ggmmlol 于 2019-10-23 12:25 编辑
因为VBScript正则表达式对象不支持Split方法,所以,在需要按特定规则把字符串拆分成字符串数组时,就颇为不便。为此,开发一个把正则表达式匹配到的内容作为拆分符的自定义函数REGSPLIT。它比转用JS中的正则SPLIT方法高效。因为后者,需要有一个用于间接运行JS的“容器”对象,而每次创建和销毁这个对象,都会耗时不少。
功能:
使用正则表达式,把源字符串中每一个匹配到的字符串或位置,作为一个“分隔符”,以此把源字符串拆分成一个一维的字符串数组。
参数:
1、源字符串。此参数为必需。
2、正则表达式。此参数为必需。
3、是否忽略大小写。
此参数可选,默认值为False,表示正则表达式匹配时,区分大小写。 4、拆分得到的字符串中,是否忽略空字符串。
此参数可选,默认值为False,表示不忽略空字符串。如为TRUE,则所得结果之中不会包含空字符串。
- Public Function REGSPLIT(ByVal text1$, ByVal pttn$, Optional ByVal ICase As Boolean = False, Optional ignore_empty As Boolean = False)
- Dim tmp(), n&, p&, ma As Object, s$, f&
- Set oReg = CreateObject("VBScript.RegExp")
- oReg.Global = True
- oReg.IgnoreCase = ICase
- oReg.Pattern = pttn
- n = -1: p = 1
- For Each ma In oReg.Execute(text1)
- f = ma.FirstIndex + 1
- If Not ignore_empty Or (f > p) Then
- n = n + 1
- ReDim Preserve tmp(0 To n)
- tmp(n) = Mid(text1, p, f - p)
- End If
- p = f + ma.Length
- Next
- If Not ignore_empty Or p <= Len(text1) Then
- n = n + 1
- ReDim Preserve tmp(0 To n)
- tmp(n) = Mid(text1, p)
- End If
- REGSPLIT = tmp
- End Function
复制代码 |