我试图在VBScript中将多个字符串添加到多维数组中。我希望我能在短时间内解释一下: 每个字符串都包含一些用逗号分隔的数据。现在我想将所有这些数据添加到一个数组中,每个字符串都有一个维度。
例如
Dates = "12.02.2016, 13.08.2017, 19.05.2018"
Temperatures = "23.1, 24.9, 75.3"
Humidity = "26, 29, 95"
使用
将每个String转换为一维数组是没有问题的AmbientConditionsArray = Split(Dates, ", ")
但我真的不知道把它变成像
这样的二维数组AmbientConditionsArray(0,0) = Date1
AmbientConditionsArray(0,1) = Temperature1
AmbientConditionsArray(0,2) = Humidity1
AmbientConditionsArray(1,0) = Date2
AmbientConditionsArray(1,1) = Temperature2
AmbientConditionsArray(1,2) = Humidity2
等等。
答案 0 :(得分:3)
虽然你可以使用多维数组,但它会比较麻烦。
如何简单地使用三个独立的常规数组?
Dates = Split("12.02.2016, 13.08.2017, 19.05.2018", ", ")
Temperatures = Split("23.1, 24.9, 75.3", ", ")
Humidity = Split("26, 29, 95", ", ")
将它们作为值块使用我会使用字典。
Dim AmbientConditions
Set AmbientConditions = CreateObject("Scripting.Dictionary")
AmbientConditions.Add "Dates", Split("12.02.2016, 13.08.2017, 19.05.2018", ", ")
AmbientConditions.Add "Temperatures", Split("23.1, 24.9, 75.3", ", ")
AmbientConditions.Add "Humidity", Split("26, 29, 95", ", ")
稍后您可以以可读的方式访问各个值:
MsgBox AmbientConditions("Humidity")(1)
' -> shows "29"
答案 1 :(得分:2)
@Tomalak's answer是一种巧妙的方法,但是如果您确实希望原始多维数组方法更接近原始请求,那么您将使用动态数组,就像这样。
Option Explicit
'Named constants for the three dimensions
Const COND_DATE = 0
Const COND_TEMPERATURE = 1
Const COND_HUMIDITY = 2
Dim Dates, Temperatures, Humidity, i
Dim AmbientConditions()
Dates = Split("12.02.2016, 13.08.2017, 19.05.2018", ", ")
Temperatures = Split("23.1, 24.9, 75.3", ", ")
Humidity = Split("26, 29, 95", ", ")
ReDim AmbientConditions(2, UBound(Dates))
For i = 0 to Ubound(Dates)
AmbientConditions(COND_DATE, i) = Dates(i)
AmbientConditions(COND_TEMPERATURE, i) = Temperatures(i)
AmbientConditions(COND_HUMIDITY, i) = Humidity(i)
Next
For i = 0 To UBound(AmbientConditions, 2)
WScript.Echo AmbientConditions(COND_DATE, i)
WScript.Echo AmbientConditions(COND_TEMPERATURE, i)
WScript.Echo AmbientConditions(COND_HUMIDITY, i) & vbCrLf
Next
输出:
12.02.2016 23.1 26 13.08.2017 24.9 29 19.05.2018 75.3 95
对于各种维度,也遵循@Tomalak's suggestion to use Named Constants。
答案 2 :(得分:1)
在这里形成你的代码是可以做到的;这是一个真正的多维数组。 [代码是由于我的轻微疏忽而编辑的]
trim()
现在,您的所有数据都整齐地存储在一个多维数组中。
第二个模型接近第一个答案,但我认为它也符合您的要求。 [它使用嵌套数组来满足混合多维数组的目标]
Dates = Split("12.02.2016, 13.08.2017, 19.05.2018", ", ")
Temperatures = Split("23.1, 24.9, 75.3", ", ")
Humidity = Split("26, 29, 95", ", ")
Dim AmbientConditionsArray()
ReDim AmbientConditionsArray(2,UBound(Dates))
For i = 0 TO UBound(Dates)
AmbientConditionsArray(0,I) = Dates(I)
AmbientConditionsArray(0,I) = Temperatures(I)
AmbientConditionsArray(0,I) = Humidity(I)
Next