【问题标题】:VBScript array ? If then elseVBScript 数组?如果 那么 否则
【发布时间】:2015-12-15 03:29:26
【问题描述】:

我是 VBScript 新手,我们使用的解决方案是使用 VBScript 来操作数据

执行 if then else 不是问题,但是当我有一个大数据集,输出很少时,我希望使用某种数组,我可以将值存储在数组中并仍然使用 if then else

要求非常基本,但环顾四周后似乎在语法上有点混乱

简单的 if then else 很好,但要写很多 if then else

    If Input1 = "A1" Then
    Output0 = "A"

    ElseIf Input1 = "B1" Then
    Output0 = "B"

    Else
    Output0 = "C"
    End If

我需要实现的是,请注意值不一样,修剪不是下面的要求

If Input1 = "A1,A2,A3" Then
Output0 = "A"

ElseIf Input1 = "B1,B2,B3" Then
Output0 = "B"

Else
Output0 = "C"
End If

使用 SQL 我会做一个IN 语句

【问题讨论】:

标签: arrays vbscript


【解决方案1】:

VBscript 将输入映射到输出的工具是Dictionary。所以使用一个:

>> Set d = CreateObject("Scripting.Dictionary")
>> d("A1") = "A"
>> d("A2") = "A"
>> d("B1") = "B"
>> d("C")  = "C"
>> For Each k In Split("C B1 A2 B2 A1")
>>     If d.Exists(k) Then
>>        WScript.Echo k, d(k)
>>     Else
>>        WScript.Echo k, "???"
>>     End If
>> Next
>>
C C
B1 B
A2 A
B2 ???
A1 A

【讨论】:

  • 只是出于兴趣,您使用什么来生成代码示例?
  • 我的大脑和基于visualbasicscript.com/… 的 REPL。备选:planetcobalt.net/sdb/vbsh.shtml
  • 感谢您的建议,但这似乎与做很多 if then else 语句相同,经过更多挖掘,我将采用这种方法,但我将首先构建一个 sql 表将其称为数据的中间表
【解决方案2】:

为了完整起见,您还可以使用Select Case 语句,它允许Case 中的表达式列表例如

Select Case Input1
    Case "A1", "A2", "A3"
        Output0 = "A"
    Case "B1", "B2", "B3"
        Output0 = "B"
    Case "C1", "C2", "C3"
        Output0 = "C"
    Case Else
        Output0 = "D"
End Select

【讨论】:

  • 完美,除了以 End Select not Case 结尾
  • 对不起,我应该测试一下
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-29
  • 2011-03-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-19
相关资源
最近更新 更多