gpt4 book ai didi

arrays - VBA - 使用多维数组而不是两个单独的数组?

转载 作者:行者123 更新时间:2023-12-01 01:29:53 26 4
gpt4 key购买 nike

最近有很多愚蠢的问题,但我希望能对此提出一些意见。
我有一个来自 INI 文件的字符串。它看起来像 Firstname=FIRSTNAME .这基本上是一个包含大量这些的数组。我想把它们分开,但同时保留它们。所以,我设法把 Firstname在它自己的数组和 FIRSTNAME 中在它自己的。但是后来我的一位同事说“你为什么不直接使用多维数组呢?”。这让我思考,把 Firstname在 0 和 FIRSTNAME在 1. 但我该怎么做呢?

这是我现在的代码:

    For iTeller = 0 To UBound(arrIniName)
If Not arrIniName(iTeller) = "" Then
arrIniName(iTeller) = Split(arrIniName(iTeller), "=")(0)
End If
Next

For iTeller = 0 To UBound(arrIniValue)
If Not arrIniValue(iTeller) = "" Then
arrIniValue(iTeller) = Split(arrIniValue(iTeller), "=")(1)
End If
Next

arrIniName 和 arrIniValues 都由完全相同的数组开始。看起来像这样:
arrIniName(0) "Fistname=FIRSTNAME"
arrIniName(1) "Lastname=LASTNAME"
arrIniName(2) "Initials=INITIALS"

所以我基本上按照我现在的方式将每个人分成自己单独的数组。但是将它们放在多维数组中可能会更好?因为那样我就只需要管理一个阵列,也可以通过 For Each 拉出该阵列。环形。

编辑:我最终这样做了,其中 Values是数组
For Each s In Values
Dim strName, strValue
s = Split(s, "=")
strName = s(0)
strValue = s(1)

'Run function strName, strValue
Next

最佳答案

理想的解决方案听起来像 Dictionary (保存键/值对的数据结构 - 正是您在 INI 文件中所拥有的)。

这里不需要多维数组,因为您只有 2 个维度(键和值)。数组通常比字典更难使用,因为它们难以调整大小,因此您需要预先知道有多少项。

因此,我建议使用以下代码:

Dim dict As Dictionary
Set dict = new Dictionary
Dim key as String
Dim value as String

For iTeller = 0 To UBound(arrIniValue)
If Not arrIniValue(iTeller) = "" Then
key = Split(arrIniValue(iTeller), "=")(0)
value = Split(arrIniValue(iTeller), "=")(1)
dict.Add(key, value)
End If
Next

但是,如果您想使用多维数组,那么以下将做到:
' Declare a 2-dimensional array, of dimensions "n by 2".
Dim results(UBound(arrIniValue), 2) As String

For iTeller = 0 To UBound(arrIniValue)
If Not arrIniValue(iTeller) = "" Then
key = Split(arrIniValue(iTeller), "=")(0)
value = Split(arrIniValue(iTeller), "=")(1)
results(iTeller, 0) = key
results(iTeller, 1) = value
End If
Next

关于arrays - VBA - 使用多维数组而不是两个单独的数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5483537/

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