gpt4 book ai didi

regex - 使用 RegEx 在 VBA 中分割字符串

转载 作者:行者123 更新时间:2023-12-02 04:17:32 25 4
gpt4 key购买 nike

我是 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")

“Hi”消息框弹出,但“Bye”消息框永远不会弹出,并且下面的代码似乎根本没有被执行,这导致我怀疑 RegEx.Split 导致它被卡住了。

我可以检查我是否确实以正确的方式使用 RegEx.Split 吗?根据 MSDN here , Split(String, String) 也返回一个字符串数组。

谢谢!

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

最佳答案

在 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", "[,;/]")

关于regex - 使用 RegEx 在 VBA 中分割字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28107005/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com