2017-04-04 49 views
0
<% 
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到10,但它顯示錯誤。選擇帶條件的案例(經典ASP)

感謝您的幫助,謝謝!

回答

-1

您正在頁面中使用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 
%> 
0

當你的規格可以歸結爲一個常規/ 可計算映射,Select CaseIf .. 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 
0

一些替代品

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

+1

32指出該錯誤是用於ALT反例。 2. –

+0

@ Ekkehard.Horner,當然,你是對的。我不應該在被要求吃晚餐時發帖。我的錯。 –