最近有很多愚蠢的问题,但我很欣赏这方面的一些意见。
我有一个来自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
答案 0 :(得分:4)
理想的解决方案听起来像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