ASP程序设计•VBScript函数5.8•VBScript的基本格式5.2•VBScript的数据类型5.3•VBScript常量5.4•VBScript变量5.5•脚本语言概述5.1•使用循环语句5.11•本章小结5.9•注释语句5.12•使用条件语句5.10第五章内容简介•VBScript数组5.6•容错语句5.13•VBS的运算符和表达式5.7•VBScript过程5.95.1脚本语言概述•所谓脚本语言,就是一种介于HTML语言和VisualBasic、Java等高级语言之间的一种语言。•在ASP程序中常用的脚本语言有VBScript和JavaScript等语言,系统的默认语言为VBScript语言。本章我们讲解VVBScript的用法•在ASP中,服务器脚本在WEB服务器上执行,生成发送到浏览器的HTML页面由WEB服务器负责。在ASP中,服务器脚本要用分隔符%和%括起,或者在script/script标记中用RUNAT=Server表示脚本在服务器端执行。•客户端脚本由浏览器处理,必须把脚本代码用script/script标记嵌入到HTML页面中去。•例如5-1.asp.5.2VBScript代码的基本格式•在服务器端运行,有两种方式•方法一:%VBScript代码%•方法二:ScriptLanguage=”VBScript”•runat=”Server”•VBScript代码•/Script•有时候也需要在客户端运行,语法如下:•ScriptLanguage=”VBScript”•VBScript代码•/Script5.3VBScript的数据类型•在VBScript,只有一种数据类型,称为Variant,也有叫做变体类型。Variant变量中保存的数据类型称为变量的子类型。•常见的字类型有字符串、数字、日期、逻辑类型。•Variable=2001‘VBScript会将它当成整数对待•Variable=”2001”‘VBScript会将它当成字符串对待•Variable=”北京大学”‘VBScript会将它当成字符串对待•Variable=“2008-8-8”‘VBScript会将它当日期对待5.4VBScript常量5.4.1直接常量(常数)5.4.2符号常量5.4.1直接常量(常数)•直接常量也称为字面常量,指的是可以从字面形式上辨别出来的常量,其实就是我们通常说的常数。•常量类型:•①两边加双引号()表示字符串常量。区别字符串常量和数字常量的标志就是看两边是否有双引号。比如100看起来是数字,但实际上是字符串常量。•②如果发生引号嵌套,就将内层引号替换为单引号(')或连续两个双引号(),比如ab'cd'ef或abcdef。不过,内层如果是中文引号则不必替换。•③两边加#号表示日期或时间常量。5.4.2符号常量•所谓符号常量,指的是用一个具有一定含义的直观的名字来代表一个数值、字符串或日期等常数。•分类:•自定义常量•声明使用Const语句,语法如下:•ConstPI=3.1415926'表示数值型常量•ConstconCountry=中国'两边加表示字符串型常量•ConstconBirthday=#1990-9-9#'两边加#表示日期或时间常量•内置符号常量•如:,vbLongDate就表示以长日期格式显示5.5VBScript变量•5.5.1变量的命名规则•5.5.2变量的声明、赋值和引用•5.5.3强制声明变量•5.5.4变量的作用范围和有效期变量•所谓变量,就是在程序运行过程中,其值可以被改变的量。•严格说来,变量代表内存中具有特定属性的一个存储单元,它用来存放数据,也就是变量的值。为了方便引用,我们可以给这个存储单元定义一个名字,这就是变量的名称。•变量与常量非常类似,只不过常量一经声明其值就不能改变了,而变量在声明后仍可随时对其值进行修改。5.5.1变量的命名规则•在VBScript中,变量的命名规则如下:•(1)变量名必须以字母开头;•(2)可以使用字母、数字和下划线,但不能使用任何标点符号;•(3)长度不能超过255个字符;•(4)不能使用VBScript的关键字,所谓关键字,就是Const、Dim、Sub、End等在语法中使用的一些特殊字符串。5.5.2变量的声明、赋值和引用•声明(定义)变量可以使用Dim语句•如:DimintA'声明一个变量intA•变量的赋值也与许多高级语言相同,变量放在等号的左边,赋值语句放在等号的右边,赋值语句可以是一个常量(常数),也可以是一个表达式。•如:intA=10+20*3•变量的引用和常量类似,可以将变量直接赋值给另外一个变量,也可以将变量引用到表达式中。•DimintA,intB,intC'声明3个变量•intA=5'给变量intA赋值•intB=5'给变量intB赋值•intC=intA+intB'引用变量intA和intB,将两者之和赋给变量intC5.5.3强制声明变量•如果希望强制要求所有的变量必须先声明才能使用,则可以在ASP文件中所有的脚本语句之前添加OptionExplicit语句,用法如下:•%OptionExplicit%•添加了OptionExplicit语句后,如果使用变量前没有预先声明,调试程序时就会报错。5.5.4变量的作用范围和有效期•作用范围也称作用域,表示在什么空间范围内可以使用该变量。在VBScript中,变量的作用范围是由变量的声明位置决定的。•过程级变量:在一个过程内声明的变量,则只有在这个过程中的代码才可以使用该变量。•脚本级变量:在所有过程之外声明的变量,则该文件中的所有代码均可以使用该变量。•有效期也称存活期,表示变量在什么时间范围内可以使用该变量。•过程级变量的有效期就是该过程的运行时间,过程结束后,变量就随即消失了;脚本级变量的有效期就是从它被声明那一刻到整个代码的结束。5.6VBScript数组•5.6.1数组的命名、声明、赋值和引用•5.6.2多维数组•5.6.3变长数组数组•数组代表内存中具有特定属性的若干连续的存储单元,每个单元都可以用来存放数据,根据单元的索引(也称下标)就可以访问特定的存储单元。5.6.1数组的命名、声明、赋值和引用•数组的命名、声明、赋值和引用与上一节讲的变量基本上是一样的,所不同的是要声明数组中的元素数(也就是长度)。•如:DimintA(2)‘声明一个元素数为3的数组•intA(0)=1'给第1个数组元素变量赋值•intA(1)=2'给第2个数组元素变量赋值•intA(2)=3'给第3个数组元素变量赋值•VBScript数组索引从0开始计数。5.6.2多维数组•多维数组的引用和赋值和一维数组是一样的,只不过括号中的第1个数字表示所在行,第2个数字表示所在列。•举例:声明一个3行4列的二维数组•DimintA(2,3)‘声明一个3行4列的二维数组•下面是该二维数组的结构示意图:5.6.3变长数组•变长数组又称为动态数组,意思是声明数组时可以不确定数组元素个数,以后根据需要再确定。•声明变长数组的语法如下:•DimintA(),声明方法和定长数组类似,只是在括号中不指名数组长度而已。当需要使用的时候,可以用Redim语句重新声明该数组。如:•RedimintA(3)'重声明数组,长度为4•Redim数组后,原有的数值就全部清空了。如果希望保留原有元素的数值,在Redim语句中需要添加Preserve参数,例如:%RedimPreserveintA(5)%5.7VBScript运算符和表达式•5.7.1算术运算符和数学表达式•5.7.2连接运算符和字符串表达式•5.7.3比较运算符和条件表达式•5.7.4逻辑运算符•5.7.5混合表达式中的优先级VBScript运算符和表达式总述•VBScript继承了VB的所有类别的运算符,包括算术运算符、连接运算符、比较运算符和逻辑运算符•要注意运算顺序,先计算算术运算符,其次连接运算符,再次比较运算符,最后计算逻辑运算符。•VBScript主要包含三种不同的表达式:数学表达式(如3+5*7)、字符串表达式(如ab&cd)和条件表达式(如53)5.7.1算术运算符和数学表达式•算术运算符和数学表达式主要用于常规的数学运算。•双目运算符•如:intResult=intA^2+intB^2'求两个变量的平方和•单目运算符•intResult=-5'求负数,结果为-5•算术运算符在实际运算中是有优先顺序的,依次为^、-(求负)、*和/、\、Mod、+和-。当然,大家也可以使用括号任意改变运算顺序。•大部分运算符两边不需要留空格,但是少数容易混淆的运算符两边必须留空格,如Mod。5.7.2连接运算符和字符串表达式•连接运算符和字符串表达式主要用于将若干个字符串连接成一个长的字符串。•&运算符表示强制连接,不管两边的操作数是字符串、数值、日期还是布尔值,它都会把它们自动转化为字符串然后连接到一起•如:strResult=ab&cd“'结果为abcd“•+运算符也可以用于连接字符串,但只有两个操作数都是字符串时才执行连接运算;如果有一个操作数是数值、日期或者布尔值,就执行相加运算。此时,如果有一个操作数无法转换成可以相加的类型,就会出错。5.7.3比较运算符和条件表达式•常用的比较运算符包括=、、、、=和=,这些运算符执行后的结果为True(真)或False(假)•如:blnResult=53'对两个数字进行比较,结果为True•blnResult=#2008-1-1##2008-8-8#'对两个日期进行比较,结果为True•比较运算符在实际运算中是没有优先顺序的,按从左到右的顺序进行。5.7.4逻辑运算符•逻辑运算符是对两个布尔值(True或False)或两个比较表达式进行一系列的逻辑运算,然后再返回一个布尔值结果。•常用的逻辑运算符有And(逻辑与)、Or(逻辑或)和Not(逻辑非),运算规则如下:•(1)And表示并且,只有两个操作数都是True的时候,结果才为True,否则为False;•(2)Or表示或者,只要两个操作数中有一个是True,结果就为True,否则为False;•(3)Not表示求反,它是单目运算符,只要一个操作数,当操作数是True的时候,结果为False,当操作数为False时,结果为True。•还有其他几个不太常用的逻辑运算符:Xor、Eqv、Imp5.7.5混合表达式中的优先级•所谓混合表达式,指的是一个表达式中包含了多类运算符,此时运算顺序稍微有些复杂,需要先计算算术运算符,其次连接运算符,再次比较运算符,最后计算逻辑运算符。•不过,建议大家没有必要去记这些顺序,在编程时可以充分利用括号“()”来改变运算顺序,最后达到自己的要求。5.8VBScript函数•5.8.1数学函数•5.8.2字符串函数•5.8.3日期和时间函数•5.8.4数组函数•5.8.5格式化函数•5.8.6转换函数•5.8.7检验函数VBScript函数•所谓函数,指的是由若干语句组成的程序模块,它可以实现一个特定的功能,并返回一个函数值。•函数分类:•内部函数即系统函数,如Time().•自定义函数:为了实现某个特定功能,自己编写的程序模块。•使用函数时要特别注意函数参数的个数和类型。5.8.1数学函数•数学函数包括取整函数、随机函数、绝对值函数、三角函数和指数函数等,它们的参数和返回的函数值一般都是数值。•常用的数学函数:•Int(number)•Round(number[,decimal])•Rnd()5.8.2字符串函数•字符串函数可以实现对字符串进行截头去尾、大小写替换等操作。•常用字符串函数:•Len(string)•LCase(string)、UCase(string)•Trim(string)、Ltrim(string)、Rtrim(string)•Mid(string,start[,length])、Left(string,length)、Right