【问题标题】:Adding static strings to a cumulative Multi-dimension array将静态字符串添加到累积多维数组
【发布时间】:2020-07-04 05:42:29
【问题描述】:

我有一个查找某些字符串的正则表达式循环(下面代码中的Match.value)。我需要使用 4 个不同的 REGEX 执行此循环 4 次,并在四个 REGEX 循环中的每一个中找到匹配项时累积构建数组。

我已经能够用我的匹配项填充一维数组,但我无法弄清楚如何将其他信息(与每个匹配项关联的所有静态文本/字符串)添加到其他维度。我希望最终得到这样的结果:

匹配值 | String1_这里 | String2_这里 | String3_这里 | String4_这里

Dim serialArray() As String

For Each Match in theMatches
    Redim Preserve serialArray(x)
    serialArray(x) = Match.value
    x = x + 1
Next Match

【问题讨论】:

  • 你到底在坚持什么? “向其他维度添加其他信息”是什么意思?
  • 你只能Redim Preserve多维数组的最后一个维。
  • @SJR 我需要将其他信息与每场比赛相关联。因此,对于与我的第一个 REGEX 模式关联的循环,对于它找到的每个匹配项,我需要将一些上下文信息添加到其他维度。因此,如果它找到“Cat”,我需要能够将“Animal”、“Furry”和“Black”添加到 cat“row” 这有意义吗?
  • @TimWilliams 抱歉,数组对我来说无疑是一个弱点。现在,据我了解,我有一个空的一维数组。我可以将其更改为多维吗?如果可以,我该如何做到这一点并将信息添加到其他维度?

标签: arrays vba multidimensional-array ms-word


【解决方案1】:

试试下面...

With theMatches
    If .Count > 0 Then
        ReDim serialArray(1 To .Count, 1 To 5) 'allocate storage space for an N X 5 array
        x = 1
        For Each Match In theMatches
            serialArray(x, 1) = Match.Value
            serialArray(x, 2) = "String1"
            serialArray(x, 3) = "String2"
            serialArray(x, 4) = "String3"
            serialArray(x, 5) = "String4"
            x = x + 1
        Next Match
    End If
End With

【讨论】:

  • @TimWilliams 感谢您指出这一点,我已经相应地编辑了我的帖子。干杯!
  • 除了删除关键字Preserve 之外,我还更正了ReDim,以便数组的索引是从1 开始的,正如我原本打算的那样。请查看我的编辑。
  • 一个更灵活的解决方案是嵌套脚本字典。
猜你喜欢
  • 1970-01-01
  • 2016-05-06
  • 1970-01-01
  • 2023-03-14
  • 1970-01-01
  • 1970-01-01
  • 2019-09-20
  • 2016-07-11
  • 1970-01-01
相关资源
最近更新 更多