Select 经典中的案例数 ASP

Select case number between in Classic ASP

如何在经典 ASP 中制作一个像下面这样的 select?

<%
Select case aNumber
    case 1 to 2
        a="pizza"
    case 3 to 4
        a="pasta"
    case else
        a="spaghetti"
end select
%>

你不能,但有一个解决方法

<%
Dim aNumber: aNumber = 1
Dim a

Select case aNumber
Case 1, 2
  a = "pizza"
Case 3, 4
  a = "pasta"
Case Else
  a = "spaghetti"
End Select

Call Response.Write(a)
%>

输出:

pizza

这可能看起来像上面,但它的工作方式不同,例如,如果我们想将第一个 Case1 to 2 更改为 1 to 3

<%
Dim aNumber: aNumber = 2
Dim a

Select case aNumber
Case 1, 3
  a = "pizza"
Case 4
  a = "pasta"
Case Else
  a = "spaghetti"
End Select

Call Response.Write(a)
%>

输出:

spaghetti

我们没有得到 pizza 因为 Case 必须包括所有选项,它不能在范围基础上工作,所以需要进行以下修改才能工作;

Case 1, 2, 3

输出:

pizza

有用的链接

  • MSDN - Select Case Statement

  • How do you implement a select statement in VBScript?

  • Condition in Case of Select/Case statement in classic ASP (不是最清楚的解释)

Select Case Statement 中指定范围来自 VB6 时代,可能更早。 VBA 和 VB.Net 也支持但从未在 VBScript 中实现,奇怪。所以你不能。

但是还有其他方法可以达到类似的效果。例如下面的解决方法:

Select Case True 'looking for True
    Case aNumber >= 1 And aNumber <= 2
        a = "pizza"
    Case aNumber >= 3 And aNumber <= 4
        a = "pasta"
    Case Else
        a = "spaghetti"
End Select

或通过辅助函数进行增强:

Function InRange(val, min, max)
    InRange = val >= min And val <= max
End Function

Select Case True 'looking for True
    Case InRange(aNumber, 1, 2)
        a = "pizza"
    Case InRange(aNumber, 3, 4)
        a = "pasta"
    Case Else
        a = "spaghetti"
End Select