脚本编写技巧
---摘自《CNET》
在 VBScript 中,您可以不必像在其他脚本语言中那样声明变量,或者是明确定义变量的类型。您使用过一次变量,这个变量就存在了。然而,这种特性就使您的代码对输入错误毫无防范。如果您在代码中的某个地方输错一个变量名,那么就创建了一个新的变量。这样,您的脚本就可能不能正常运行,而你自己可能还没有意识到这一点。
最好养成使用变量之前先对其进行说明。说明方法很简单,只要输入 Dim variableName 就可以:
<% Dim IntUserID%>
IntUserID 现在就可以使用了。另一种安全的方法是使用 Option Explicit。如果您打开了 Option Explicit,那么无论何时使用未定义的变量,您都将接收到一条错误消息。这听起来可能让人感到厌烦,但是真正遇到 BUG 时会让你省不少力气,因为不然的话你可能要费好多事。
要使用 Option Explicit,只需在脚本的第一行输入下列内容:
<% Option Explicit %>
如果您想了解忘记声明变量时会发生什么情况,可以运行下面这一小段代码:
<% Option Explicit %>
<% strName = Request.Form("Name") %>
由于未定义 strName 变量 (Dim strName),您将看到一条类似下面内容的错误消息:
Microsoft VBScript runtime error '800a01f4'
Variable is undefined: 'strName'
/e/oe-test.asp, line 10
使用Len函数 通过使用 Len (字符串)函数,您可以确定文本的字符串长度。
<%
IntString = "This is a Simple Sentence."
IntStringLength = Len(IntString)
Response.Write "There are " & IntStringLength & " characters (including spaces) in the sentence shown below:"
Response.Write "" & IntString & ""
%>
如果您不知道 Len 何时能够派上用场,那么就想一想您要求用户在表格输入邮政编码或者选择三位PIN的时候吧。利用 Len 函数,您就可以验证用户输入了足够的数字。
使用Trim 截取字符串可能是你早就想用的东西。字符串通常在其开始和结束处有一个多余的空格,而如果您没有截取它,那么您可能就要担心变量是不是能够正确匹配了:
<% strName = Request.Form("Name")
strCheckName = "Amy Cowen"
If strName = strCheckName THEN
Response.Write "Success! The names matched."
Else
Response.Write "Sorry. The names do not match."
End if
%>
如果 strName 的值是“Amy Cowen”(因为我就是这样输入到表框中的),那么尽管两个变量看起来都含有相同的信息,但是该测试仍将失败,原因是"Amy Cowen" 不等于" Amy Cowen"。
同样,如果您正向 URL 中输入 Name 字段:
<% Response.Write " & objRec("Name") & "">Your Site" %>
如果Name 字段中的任一个记录有多余的空格,测试将很快出现问题。
您可以截取整个字符串,也可以对字符串的左边或右边运行下面的进程:
<% strComments = Request.Form("Comments")
strComments = Trim(strComments)
%>
假设用户已输入下列内容:
" 我在安装下载来的软件时遇到了问题。 " (所显示的引号只不过是让您看到空格。)
上面显示的语句将被截取多余的空格,变为如下语句:
"我在安装下载来的软件时遇到了问题。"
或者,我们也可以再返回到" Amy Cowen"示例中,如果在脚本中加入下列语句,字符串将完全匹配:
strName = Trim(strName)
要截取右边的空格,应使用 Rtrim(string)。要截取左边的空格,应使用 Ltrim(string)。
转换
在刚开始学习使用类似 VBScript 之类的语言时,非常容易犯的一个错误就是将 integer (512) 与 string (512) 相比较。如果您没有意识到此 512 非彼 512,那么您可能要花费一段时间来查明给定脚本不能运行的原因。
设想这样一个情形:您正将文件的 ID (intUserID) 传向 ASP 脚本。利用 Request.QueryString,您可以确定用户要编辑的文件的 ID。您需要从数据库中检索该记录的信息,并将它写到屏幕上。数据库中的 ID 很可能是整数——尤其是在您对该字段使用了 AutoNumber 功能时。但是实际上,根据您对变量的设置情况,传送的 ID 却很可能是个字符串。因此,除非您将这两种类型转换为同一类型,否则它们永远不会匹配。
将传送的变量转换为整数是很容易做到的,而且可以避免以后的麻烦。语句格式很简单:
<%
dim intUserID intUserID = Request.QueryString("userID")
intUserID = CInt(intUserID)
' intUserID is now an integer.
%>
您还可以给 ASP 代码加注释和使用 include 函数。