在VBScript中,表达式可以将变量、常数、运算符和关键字结合起来,用于执行运算、处理字符或者测试数据,表达式运算返回的结果可能是数字类型的数据,也可能是字符串类型或者其他类型的数据。其实,我们对于表达式应该是十分熟悉的,例如,1+2就是一个简单的表达式。
在表达式运算的过程中,表达式里操作一个或两个变量、常量或者数据产生运算结果的符号称为运算符,被运算符操作的数据称作操作数,需要注意的是,操作数并不仅仅局限于数字和字符串等类型的数据,它本身也可以是表达式。VBScript支持一套完整的运算符,其中我们会用到算术运算符、关系运算符、逻辑运算符和连接运算符,下面我们就对这些操作符进行简要的介绍。
在VBScript中,算术运算符用以完成数学运算,一般情况下,算术运算符的语法如下所示:
Result = Exp1 Operator Exp2
其中,Result是表达式运算结果,Operator是算术运算符,Exp1和Exp2则是表达式中的操作数。
VBScript中能够使用的算术运算符如表2.2所示,下面我们分别展开介绍:
表2.2 VBScript算术运算符
运算符 |
说明 |
+ |
加法运算符,将两个数相加 |
- |
减法运算符,将两个数相减或者对一个数取负 |
* |
乘法运算符,将两个数相乘 |
/ |
除法运算符,将两个数相除 |
\ |
整除运算符,将两个数进行整除运算 |
^ |
幂运算符,将两个数进行幂运算 |
Mod |
模运算符,将两个数整除后进行取模操作 |
加法运算符对应着数学运算中的加法运算,例如表达式1+2的运算结果为3。
加法操作符还可以对字符串类型的操作数进行运算,然后将两个字符串连接起来作为运算结果。例如,"How are "+"you!"的运算结果为"How are you!"。虽然加法运算符完全可以进行字符串连接,不过,我们并不建议这样使用,因为容易引起混淆,在字符串连接的时候,我们建议采用字符串连接的符号——&。
在加法运算的过程中,如果两个操作数都是数字类型,那么将进行加法操作:3+4的结果是7;如果两个操作数都是字符串类型,那么将进行字符串连接操作:“3”+“4”的结果是“34”;如果一个操作数是数字,另外一个操作数是字符串,那么会将字符串转化为数字之后进行加法操作:3+“4”的结果是7。
减法运算符对应着数学运算中的减法运算,例如表达式2-1的运算结果为1。
同时,减法运算符还是一个取负运算符,当它作为取负运算符的时候,它只有一个操作数,取负运算符的功能是返回操作数的相反数。例如如果变量i的值为2,那么-i这个表达式的值为-2。
乘法运算符对应着数学运算中的乘法运算,例如表达式2*3的运算结果为6。
除法运算符对应着数学运算中的除法运算,但VBScript中的除法运算有些特别,在VBScript中,除法运算后的结果是一个浮点数,而不象C语言或者Java语言那样在整数进行除法运算时将运算结果强行转化整数,在VBScript中,1/2=0.5,而在C语言中,1/2=0。
整除运算符对应着数学运算中的整除运算,将两个操作数相除后返回结果的整数部分,例如表达式5\2的运算结果为2。不过在VBScript中,整除运算符并不局限于整数,如果操作数是浮点数,VBScript会先将其四舍五入转化为整数之后,然后再进行整除运算。例如5.4\1.5=2,而5.5\1.5=3。
幂运算符对应着数学运算中的幂运算,可以用于计算第一个操作数的指数次方,例如,表达式3^2的运算结果为9。在幂运算中,指数还可以是小数,例如,3^0.5= 1.73205080756888,不过必须在第一个操作数为非负数字的时候,指数才能够是小数,因为在VBScript的运算中,并不支持复数运算。例如,如果表达式是(-3)^0.5,那么将会出现错误。
模运算符对应着数学运算中的取模运算,将两个操作数进行整除操作之后返回其余数,例如,表达式5 Mod 2的运算结果为1。和整除运算符一样的是,进行取模运算的时候,VBScript也会先将两个操作数四舍五入之后,然后再取模。例如,5.4 Mod 1.5=1,而5.5 Mod 1.5=0。
模运算符主要用于判断一个数字是否能被另外一个数字整除,例如,如果我们希望知道某个年份是否是闰年,我们可以采用如下判断方法:如果这个年份能够被4整除,并且不能被100整除,那么,这个年份是闰年,另外,如果这个年份能够被400整除,那么这个年份也是闰年。假设年份变量的名称为theYear,那么判断是否为闰年的表达式如下所示:
((theYear Mod 4 = 0) And (theYear Mod 100 <> 0)) Or (theYear Mod 400 = 0)
其中And代表的是逻辑运算中的与运算,Or代表的是逻辑运算中的或运算,关于逻辑运算,我们会在以后部分中进行介绍。
关系运算符将两个操作数进行比较,判断其关系,然后返回一个逻辑值,表明这个比较操作的结果是真还是假。其语法形式如下所示:
Result = Exp1 Operator Exp2
其中Result是表达式的判断结果,结果可能是True、False或者Null,Operator是关系运算符,Exp1和Exp2则是表达式中的操作数。在使用的时候,我们会发现,如果判断结果为True,那么返回的是-1,如果判断结果为False,那么返回的是0,如果判断结果为Null,那么什么也不返回。
VBScript支持的关系运算符如表2.3所示:
表2.3 VBScript关系运算符
运算符 |
说明 |
= |
等于关系,判断两个操作数是否相等 |
<> |
不等于关系,判断两个操作数是否不相等
|
> |
大于关系,判断前一个操作数是否大于后一个操作数 |
< |
小于关系,判断前一个操作数是否小于后一个操作数 |
>= |
大于等于关系,判断前一个操作数是否大于等于后一个操作数 |
<= |
小于等于关系,判断前一个操作数是否小于等于后一个操作数 |
IS |
对象关系,用来比较对象类型 |
注意:如果关系运算中的任何一个操作数为Null,那么表达式返回的结果既不为True,也不为False,而是Null。
在关系运算中,如果两个操作数都是数值,那么将进行数值比较。如果两个操作数都是字符串,那么将进行字符串比较。如果一个操作数是数值,另外一个操作数是字符串,VBScript则假定任何数值都比字符串要小。
等于关系比较两个操作数是否相等,如果两个操作数相等,返回True,否则返回False。例如,3=3.0的返回结果为True,3=4的返回结果为False,
不等于关系比较两个操作数是否不相等,如果两个操作数不等,返回True,否则返回False。如果操作数相同,等于关系和不等于关系判断的结果完全相反。例如,3<>3.0的返回结果为False,3<>4的返回结果为True。
如果左操作数大于右操作数,返回True,否则返回False。例如,3>2的返回结果为True,而3>3的返回结果为False。
如果左操作数小于右操作数,返回True,否则返回False。例如,3<4的返回结果为True,3<3的返回结果为False。
如果左操作数大于等于右操作数,返回True,否则返回False。在两个操作数完全相同的情况下,大于等于关系和小于关系的返回结果完全相反。例如,3>=4的返回结果为False,3>=3的返回结果为True。
如果左操作数小于等于右操作数,返回True,否则返回False。在两个操作数完全相同的情况下,小于等于关系和大于关系的返回结果完全相反。例如,3<=2的返回结果为False,3<=3的返回结果为True。
对象关系用于比较两个变量引用的对象,如果两个对象引用同一个变量,那么返回True,否则返回False。对象关系只能比较对象类型,而不能比较其他类型。例如,请看下面的语句:
Set ObjA = ObjB
在这个语句中,执行的结果是使得ObjA引用ObjB所引用的同一个对象,在这种情况下,ObjA IS ObjB的返回结果为True。
在关系运算中,如果两个操作数都是字符串,那么将进行字符串类型的比较。在比较字符串的过程中,VBScript把字符串中的每个字母转换成相应的ASCII码值,然后从第一个字符开始比较两个字符串中相应的字符,比较它们的ASCII码值。例如, “hello”=“Hello”的返回结果为False,因为左操作数的第一个字符为h,右操作数的第一个字符为H,h的ASCII码值为104,H的ASCII码值为72,从第一个字符开始就不相等了,所以表达式的值为False。
如果有两个表达式:“hello”>“Hello”和“hello”>=“Hello”,返回结果都为True,因为左操作数第一个字符的ASCII码值为104,而右操作数的第一个字符的ASCII码值为72,104>72(当然同样104>=72),所以两个表达式的值都为True。
而如果表达式为“came”>=“come”,首先,比较两个操作数的第一个字符,都是c,这样,不能直接判定两个操作数的大小,然后再比较两个操作数的第二个字符,左操作数为a,右操作数为o,a的ASCII码值为97,o的ASCII码值为111,当然97<111,所以对于这个表达式来说,它的返回结果为False。
字符串类型的比较情况下,我们用得最多的是判断某个字符串类型的变量是否为空串,假设我们判断变量的名称为theString,那么对于theString=“”这个表达式来说,如果theString为空串,则表达式为True,否则为False。
逻辑运算符可以把布尔类型的表达式组合起来,完成逻辑运算操作,然后返回其结果——真或假,这样就可以完成比较复杂的逻辑判断工作,一般情况下,逻辑运算符的语法如下所示:
Result = Exp1 Operator Exp2
其中,Result是表达式运算结果,Operator是逻辑运算符,Exp1和Exp2则是表达式中的操作数。而对于逻辑运算符中的非运算符(Not),则只有一个操作数。
在VBScript中,逻辑运算符十分丰富,如表2.4所示:
表2.4 VBScript逻辑运算符
运算符 |
说明 |
And |
与运算符,执行逻辑与运算 |
Or |
或运算符,执行逻辑或运算 |
Not |
非运算符,执行逻辑非运算 |
Xor |
异或运算符,执行逻辑异或运算 |
Eqv |
等价运算符,执行逻辑等价运算 |
Imp |
蕴涵运算符,执行逻辑蕴涵运算 |