【问题标题】:Select Case With Conditions ( Classic ASP) [duplicate]选择有条件的案例(经典 ASP)[重复]
【发布时间】:2017-08-30 01:21:28
【问题描述】:
<%
i=2 
  Select Case i
  Case 1,2,3,4,5,7,8,9,10
    response.write("Grade A")
  Case 11,12,13,14,15,16,17,18,19,20  
    response.write("Grade B")
  Case 21,22,23,24,25,26,27,28,29,30
    response.write("Grade C")
  Case 31,32,33,34,35,36,37,38,39,40
    response.write("Grade D")
  Case Else
    response.write("Invalid")
  End Select
  %> 

如何用更小的语句替换 1,2,3..。我试过把 1 To 10 但它显示错误。

感谢任何帮助,谢谢!

【问题讨论】:

    标签: vbscript asp-classic select-case


    【解决方案1】:

    一些替代品

    grade = "Invalid"
    Select Case True
        Case i < 1   
        Case i < 11 : grade = "Grade A"
        Case i < 21 : grade = "Grade B"
        Case i < 31 : grade = "Grade C"
        Case i < 41 : grade = "Grade D"
    End Select 
    

    或

    If i > 0 And i < 41 Then 
        grade = "Grade " + Chr(Asc("A") + (i-1)\10)
    Else 
        grade = "Invalid"
    End If 
    

    或

    If i > 0 And i < 41 Then 
        grade = Array("Grade A", "Grade B", "Grade C", "Grade D")((i-1)\10)
    Else 
        grade = "Invalid"
    End If 
    

    已编辑以纠正 Ekkehard.Horner 指出的错误

    【讨论】:

    • 32 是 alt 的反例。 2.
    • @Ekkehard.Horner,当然,你是对的。我不应该在被叫吃饭时发帖。我的错。
    【解决方案2】:

    由于您的规范归结为常规/可计算映射,Select Case 或 If .. ElseIf - 即樱桃采摘 - 无论如何都是错误的工具:

    Option Explicit
    
    Dim i
    
    For i = -1 to 42
        If 1 > i Or 40 < i Then
           WScript.Echo i, "invalid"
        Else
           WScript.Echo i, Chr(65 + ((i - 1) \ 10))
        End If
    Next
    

    输出:

    cscript 43214055.vbs
    -1 invalid
    0 invalid
    1 A
    2 A
    3 A
    4 A
    5 A
    6 A
    7 A
    8 A
    9 A
    10 A
    11 B
    12 B
    13 B
    14 B
    15 B
    16 B
    17 B
    18 B
    19 B
    20 B
    21 C
    22 C
    23 C
    24 C
    25 C
    26 C
    27 C
    28 C
    29 C
    30 C
    31 D
    32 D
    33 D
    34 D
    35 D
    36 D
    37 D
    38 D
    39 D
    40 D
    41 invalid
    42 invalid
    

    【讨论】:

      【解决方案3】:

      您正在页面中使用 VBScript。它不支持Select Case 语句中的范围。使用If/ElseIf 语句可能会更好。

      <%
          i=2
          If i > 0 And i <= 10 Then
              Response.Write("Grade A")
          ElseIf i > 10 And i <= 20 Then
              Response.Write("Grade B")
          ElseIf i > 20 And i <=30 Then
              Response.Write("Grade C")
          ElseIf i > 30 And i <= 40 Then
              Response.Write("Grade D")
          Else
              Response.Write("Invalid")
          End If
      %>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多