|
在教程中我们已经学习了SELECT CASE语句的基本用法:
code:
select case 条件变量名
case 值1
符合值1执行的语句
。。。
case else
如果上面的条件都不符合执行的语句
end select |
后来看到几个会员在讨论另一种SELECT CASE语句的用法,这里特别补充一下它,这种用法其实也是上面用法的一种特殊应用,也不能算是新的用法,它的用法是这样的:
code:
select case true/false
case 表达式1
符合值1执行的语句
。。。
case else
如果上面的条件都不符合执行的语句
end select
|
说到这里,就得谈谈SELECT语句的执行原理了。这里给出SELECT CASE语句比较完全的语法结构,大家可以和以上两种进行比较:
code:
select case 表达式
case 表达式1,表达式2 ...
如果select case 后所跟的变量或表达式的值与上面CASE后面的表达式的值任何一个匹配,就执行这里的语句
case ...
case else
如果上面的CASE中的值全部都不能匹配,那么执行这里的语句
end select |
那么,这其中所说的表达式,可以是一个运算的式子,也可以是一个变量名,或是一个数值。而我们上面所提到的到SELECT CASE TRUE/FALSE 用法,就是SELECT CASE用法中的一个特例。
SELECT CASE语句,首先运算 SELECT CASE后面的这个表达式,得出值,我们用A表式,然后逐个运算每个CASE后面的表达式,我们用Bx表式,如果发现A的值和其中某个Bx的值相等了,那么就执行这条CASE语句到下条CASE语句或者是END SELECT语句之前的代码,如果A和所有的Bx都不匹配,并且又有CASE ELSE 语句的话,就会执行CASE ELSE语句后的代码段。
需要注意的是,在CASE语句中,我们可以将需要匹配的多个表达式用逗号隔开。
下面通过几个典型的例子来讲解这些使用形式:
1.普通形式:请参考VIP教程:其它分支语句
2.多值匹配:
|
code:
dim a
a=5
select case a
case 5
response.write "优秀"
case 4
response.write "良好"
case 3
response.write "及格"
case 2,1,0
response.write "不及格"
case else
response.write "错误的输入值"
end select
|
看上面第四个CASE,我们设置了三个值,只要是变量A的值与这三个中的任意一个匹配就会执行打印不及格的代码。(需要说明的是,有些会员有VB的基础,可能会尝试使用 case 0 to 2 这样的用法,这在VBSCRIPT中是行不通的)
3.表达式值匹配
|
code:
dim a
a=100
select case a/20
case 10-5,6,7+1
response.write "5 or 6 or 8"
case 11+7
response.write 18
case else
response.write 0
end select
|
看上面,我们在SELECT CASE后面使用的是一个表达式,它得出的结果是 5 ,也就是说,只要下面哪个CASE语句中的值与5匹配(即相等)就会执行相应的代码。在第一个CASE中我们也使用了表达式,而且是多个,用逗号隔开了。
4.特殊的表达式值匹配
code:
dim a
a=5
select case true
case a=5
response.write 5
case a<5 or a>5
response.write "a<5 or a>5"
end select |
举这个例子,只是为了说明这个SELECT CASE TRUE/FALSE是SELECT语句的一个使用特例,并不是一种SELECT语句的语法,因为例4和例3的唯一区别就是于例四我们使用了一个关键字TRUE。只要是其中某个CASE语句后的表达式运算结果等于TRUE,相应的代码就会被执行。
另外,这个例子中我们还使用了逻辑运算符。
大家读懂上面上面那段红字后将以上四个例子逐一模拟执行一次,就可以很容易的理解SELECT语句的用法了。
说明:本文中所举例子并不一定有实际意义,纯粹用于教程,因为只需要从SELECT语句的用法上考虑它们即可。
|