多维数组vbscript中的多个字符串

时间:2016-02-12 08:20:45

标签: arrays multidimensional-array vbscript

我试图在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

等等。

3 个答案:

答案 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