热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

使用RegEx在VBA中拆分字符串

如何解决《使用RegEx在VBA中拆分字符串》经验,为你挑选了1个好方法。

我是VBA的新手,想在使用RegEx时寻求一些帮助,我希望能以某种方式告诉我我做错了什么.我目前正在尝试将日期分成单独的日期,月份和年份,可能的分隔符包括","," - "和"/".

Function formattedDate(inputDate As String) As String

    Dim dateString As String
    Dim dateStringArray() As String
    Dim day As Integer
    Dim month As String
    Dim year As Integer
    Dim assembledDate As String
    Dim monthNum As Integer
    Dim tempArray() As String
    Dim pattern As String()
    Dim RegEx As Object

    dateString = inputDate
    Set RegEx = CreateObject("Vbscript.RegExp")

    pattern = "(/)|(,)|(-)"
    dateStringArray() = RegEx.Split(dateString, pattern)

    ' .... code continues

这就是我目前正在做的事情.但是,在RegEx.Split函数中似乎出现了问题,因为它似乎导致我的代码挂起而不能进一步处理.

为了确认,我做了一些简单的事情:

MsgBox("Hi")
pattern = "(/)|(,)|(-)"
dateStringArray() = RegEx.Split(dateString, pattern)
MsgBox("Bye")

"嗨"msgbox弹出,但"再见"msgbox永远不会弹出,而且代码进一步下降似乎根本没有被剔除,这导致我怀疑RegEx.Split导致它被卡住了.

我可以检查一下我是否真的以正确的方式使用RegEx.Split?根据MSDN 这里,斯普利特(字符串,字符串)返回一个字符串数组为好.

谢谢!

编辑:我正在尝试不探索CDate()函数,因为我试图不依赖于用户计算机的区域设置.



1> Florent B...:

要在VBA中使用正则表达式拆分字符串:

Public Function SplitRe(Text As String, Pattern As String, Optional IgnoreCase As Boolean) As String()
    Static re As Object

    If re Is Nothing Then
        Set re = CreateObject("Vbscript.RegExp")
        re.Global = True
        re.MultiLine = True
    End If

    re.IgnoreCase = IgnoreCase
    re.Pattern = Pattern
    SplitRe = Strings.Split(re.Replace(text, ChrW(-1)), ChrW(-1))
End Function

用法示例:

Dim v
v = SplitRe("a,b/c;d", "[,;/]")


推荐阅读
author-avatar
君君-你好
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有