asp常用函数
摘录时间:2011/10/18 14:44:04

Array()  
 FUNCTION: 返回一个数组  
 SYNTAX: Array(list)  
 ARGUMENTS: 字符,数字均可  
 EXAMPLE: <% 
Dim myArray() 
For i = 1 to 7 
  Redim Preserve myArray(i) 
  myArray(i) = WeekdayName(i) 
Next 
%>  
 RESULT: 建立了一个包含7个元素的数组myArray 
myArray("Sunday","Monday", ... ... "Saturday")  
  
CInt()  
 FUNCTION: 将一个表达式转化为数字类型  
 SYNTAX: CInt(expression)  
 ARGUMENTS: 任何有效的字符均可  
 EXAMPLE: <% 
f = "234" 
response.write cINT(f) + 2 
%>  
 RESULT: 236 
转化字符"234"为数字"234",如果字符串为空,则返回0值   
  
CreateObject()  
 FUNCTION: 建立和返回一个已注册的ACTIVEX组件的实例。  
 SYNTAX: CreateObject(objName)  
 ARGUMENTS: objName 是任何一个有效、已注册的ACTIVEX组件的名字.  
 EXAMPLE: <% 
Set con = Server.CreateObject("ADODB.Connection") 
%>  
 RESULT:  
  
CStr()  
 FUNCTION: 转化一个表达式为字符串.  
 SYNTAX: CStr(expression)  
 ARGUMENTS: expression 是任何有效的表达式。  
 EXAMPLE: <% 
s = 3 + 2 
response.write "The result is: " & cStr(s) 
%>  
 RESULT: 转化数字“5”为字符“5”。  
  
Date()  
 FUNCTION: 返回当前系统日期.  
 SYNTAX: Date()  
 ARGUMENTS: None.  
 EXAMPLE: <%=Date%>  
 RESULT: 8/4/99  
  
DateAdd()  
 FUNCTION: 返回一个被改变了的日期。  
 SYNTAX: DateAdd(timeinterval,number,date)  
 ARGUMENTS: timeinterval is the time interval to add; number is amount of  
time intervals to add; and date is the starting date.  
 EXAMPLE: <% 
currentDate = #8/4/99# 
newDate = DateAdd("m",3,currentDate) 
response.write newDate 
%>  

<% 
currentDate = #12:34:45 PM# 
newDate = DateAdd("h",3,currentDate) 
response.write newDate 
%>  
 RESULT: 11/4/99 
3:34:45 PM  

"m" = "month"; 
"d" = "day";  

If currentDate is in time format then, 
"h" = "hour";  
"s" = "second";  
  
DateDiff()  
 FUNCTION: 返回两个日期之间的差值 。  
 SYNTAX: DateDiff(timeinterval,date1,date2 [, firstdayofweek ][,  
firstweekofyear]])  
 ARGUMENTS: timeinterval 表示相隔时间的类型,如“M“表示“月”。  
 EXAMPLE: <% 
fromDate = #8/4/99# 
toDate = #1/1/2000# 
response.write "There are " & _ 
  DateDiff("d",fromDate,toDate) & _ 
  " days to millenium from 8/4/99." 
%>  
 RESULT: 从8/4/99 到2000年还有 150 天.  
  
Day()  
 FUNCTION: 返回一个月的第几日 .  
 SYNTAX: Day(date)  
 ARGUMENTS: date 是任何有效的日期。  
 EXAMPLE: <%=Day(#8/4/99#)%>  
 RESULT: 4  
  
FormatCurrency()  
 FUNCTION: 返回表达式,此表达式已被格式化为货币值   
 SYNTAX: FormatCurrency(Expression [, Digit ][, LeadingDigit ][, Paren ][,  
GroupDigit]]]])  
 ARGUMENTS: Digit 指示小数点右侧显示位数的数值。默认值为 -1,指示使用的是 
计算机的区域设置; LeadingDigit 三态常数,指示是否显示小数值小数点前面的 
零。  
 EXAMPLE: <%=FormatCurrency(34.3456)%>  
 RESULT: $34.35  
  
FormatDateTime()  
 FUNCTION: 返回表达式,此表达式已被格式化为日期或时间  
 SYNTAX: FormatDateTime(Date, [, NamedFormat])  
 ARGUMENTS: NamedFormat 指示所使用的日期/时间格式的数值,如果省略,则使用  
vbGeneralDate.  
 EXAMPLE: <%=FormatDateTime("08/4/99", vbLongDate)%>  
 RESULT: Wednesday, August 04, 1999  
  
FormatNumber()  
 FUNCTION: 返回表达式,此表达式已被格式化为数值.  
 SYNTAX: FormatNumber(Expression [, Digit ][, LeadingDigit ][, Paren ][,  
GroupDigit]]]])  
 ARGUMENTS: Digit 指示小数点右侧显示位数的数值。默认值为 -1,指示使用的是 
计算机的区域设置。; LeadingDigit i指示小数点右侧显示位数的数值。默认值为 - 
1,指示使用的是计算机的区域设置。; Paren 指示小数点右侧显示位数的数值。默认 
值为 -1,指示使用的是计算机的区域设置。; GroupDigit i指示小数点右侧显示位数 
的数值。默认值为 -1,指示使用的是计算机的区域设置。.  
 EXAMPLE: <%=FormatNumber(45.324567, 3)%>  
 RESULT: 45.325  
  
FormatPercent()  
 FUNCTION: 返回表达式,此表达式已被格式化为尾随有 % 符号的百分比(乘以  
100 )。 (%)  
 SYNTAX: FormatPercent(Expression [, Digit ][, LeadingDigit ][, Paren ][,  
GroupDigit]]]])  
 ARGUMENTS: 同上.  
 EXAMPLE: <%=FormatPercent(0.45267, 3)%>  
 RESULT: 45.267%  
  
Hour()  
 FUNCTION: 以24时返回小时数.  
 SYNTAX: Hour(time)  
 ARGUMENTS:  
 EXAMPLE: <%=Hour(#4:45:34 PM#)%>  
 RESULT: 16 
(Hour has been converted to 24-hour system)  
  
Instr()  
 FUNCTION: 返回字符或字符串在另一个字符串中第一次出现的位置.  
 SYNTAX: Instr([start, ] strToBeSearched, strSearchFor [, compare])  
 ARGUMENTS: Start为搜索的起始值,strToBeSearched接受搜索的字符串  
strSearchFor要搜索的字符.compare比较方式(详细见ASP常数)  
 EXAMPLE: <% 
strText = "This is a test!!" 
pos = Instr(strText, "a") 
response.write pos 
%>  
 RESULT: 9  
  
InstrRev()  
 FUNCTION: 同上,只是从字符串的最后一个搜索起  
 SYNTAX: InstrRev([start, ] strToBeSearched, strSearchFor [, compare])  
 ARGUMENTS: 同上.  
 EXAMPLE: <% 
strText = "This is a test!!" 
pos = InstrRev(strText, "s") 
response.write pos 
%>  
 RESULT: 13  

  
Int()  
 FUNCTION: 返回数值类型,不四舍五入,注意取值是不大于它的整数。  
 SYNTAX: Int(number)  
 ARGUMENTS:  
 EXAMPLE: <%=INT(32.89)%>  <%=int(-3.33)%> 
 RESULT: 32  -4 
  
IsArray()  
 FUNCTION: 判断一对象是否为数组,返回布尔值 .  
 SYNTAX: IsArray(name)  
 ARGUMENTS:  
 EXAMPLE: <% 
strTest = "Test!" 
response.write IsArray(strTest) 
%>  
 RESULT: False  
  
IsDate()  
 FUNCTION: 判断一对象是否为日期,返回布尔值  
 SYNTAX: IsDate(expression)  
 ARGUMENTS: expression is any valid expression.  
 EXAMPLE: <% 
strTest = "8/4/99" 
response.write IsDate(strTest) 
%>  
 RESULT: True  
  
IsEmpty()  
 FUNCTION: 判断一对象是否初始化,返回布尔值.  
 SYNTAX: IsEmpty(expression)  
 ARGUMENTS:  
 EXAMPLE: <% 
Dim i 
response.write IsEmpty(i) 
%>  
 RESULT: True  
  
IsNull()  
 FUNCTION: 判断一对象是否为空,返回布尔值.  
 SYNTAX: IsNull(expression)  
 ARGUMENTS:  
 EXAMPLE: <% 
Dim i 
response.write IsNull(i) 
%>  
 RESULT: False  
  
IsNumeric()  
 FUNCTION: 判断一对象是否为数字,返回布尔值.  
 SYNTAX: IsNumeric(expression)  
 ARGUMENTS:  
 EXAMPLE: <% 
i = "345" 
response.write IsNumeric(i) 
%>  
 RESULT: True 
就算数字加了引号,ASP还是认为它是数字。  
  
IsObject()  
 FUNCTION: 判断一对象是否为对象,返回布尔值.  
 SYNTAX: IsObject(expression)  
 ARGUMENTS:  
 EXAMPLE: <% 
Set con = Server.CreateObject("ADODB.Connection") 
response.write IsObject(con) 
%>  
 RESULT: True  
  
LBound()  
 FUNCTION: 返回指定数组维的最小可用下标.  
 SYNTAX: Lbound(arrayname [, dimension])  
 ARGUMENTS: ; dimension 指明要返回哪一维下界的整数。使用 1 表示第一维,2  
表示第二维,以此类推。如果省略 dimension 参数,默认值为 1.  
 EXAMPLE: <% 
i = Array("Monday","Tuesday","Wednesday") 
response.write LBound(i) 
%>  
 RESULT: 0  
  
LCase()  
 FUNCTION:  返回字符串的小写形式  
 SYNTAX: Lcase(string)  
 ARGUMENTS: string is any valid string expression.  
 EXAMPLE: <% 
strTest = "This is a test!" 
response.write LCase(strTest) 
%>  
 RESULT: this is a test!  
  
Left()  
 FUNCTION: 返回字符串左边第length个字符以前的字符(含第length个字符).  
 SYNTAX: Left(string, length)  
 ARGUMENTS:  
 EXAMPLE: <% 
strTest = "This is a test!" 
response.write Left(strTest, 3) 
%>  
 RESULT: Thi  
  
Len()  
 FUNCTION: 返回字符串的长度.  
 SYNTAX: Len(string | varName)  
 ARGUMENTS:  
 EXAMPLE: <% 
strTest = "This is a test!" 
response.write Len(strTest) 
%>  
 RESULT: 15  
  
LTrim()  
 FUNCTION: 去掉字符串左边的空格.  
 SYNTAX: LTrim(string)  
 ARGUMENTS:  
 EXAMPLE: <% 
strTest = " This is a test!" 
response.write LTrim(strTest) 
%>  
 RESULT: This is a test!  
  
Mid()  
 FUNCTION: 返回特定长度的字符串(从start开始,长度为length).  
 SYNTAX: Mid(string, start [, length])  
 ARGUMENTS:  
 EXAMPLE: <% 
strTest = "This is a test! Today is Monday." 
response.write Mid(strTest, 17, 5) 
%>  
 RESULT: Today  
  
Minute()  
 FUNCTION: 返回时间的分钏.  
 SYNTAX: Minute(time)  
 ARGUMENTS:  
 EXAMPLE: <%=Minute(#12:45:32 PM#)%>  
 RESULT: 45  
  
Month()  
 FUNCTION: 返回日期.  
 SYNTAX: Month(date)  
 ARGUMENTS: date is any valid date expression.  
 EXAMPLE: <%=Month(#08/04/99#)%>  
 RESULT: 8  
  
MonthName()  
 FUNCTION: Returns a string identifying the specified month.  
 SYNTAX: MonthName(month, [, Abb])  
 ARGUMENTS: month is the numeric representation for a given month; Abb  
(optional) is a boolean value used to display month abbreviation. True  
will display the abbreviated month name and False (default) will not show  
the abbreviation.  
 EXAMPLE: <%=MonthName(Month(#08/04/99#))%>  
 RESULT: August  
  
Now()  
 FUNCTION: Returns the current system date and time.  
 SYNTAX: Now()  
 ARGUMENTS: None  
 EXAMPLE: <%=Now%>  
 RESULT: 8/4/99 9:30:16 AM  
  
Replace()  
 FUNCTION: Returns a string in which a specified sub-string has been  
replaced with another substring a specified number of times.  
 SYNTAX: Replace(strToBeSearched, strSearchFor, strReplaceWith [, start  
][, count ][, compare]]])  
 ARGUMENTS: strToBeSearched is a string expression containing a sub- 
string to be replaced; strSearchFor is the string expression to search for  
within strToBeSearched; strReplaceWith is the string expression to replace  
sub-string strSearchFor; start (optional) is the numeric character  
position to begin search; count (optional) is a value indicating the  
comparision constant.  
 EXAMPLE: <%  
strTest = "This is an apple!" 
response.write Replace(strTest, "apple", "orange") 
%>  
 RESULT: This is an orange!  
  
Right()  
 FUNCTION: 返回字符串右边第length个字符以前的字符(含第length个字符).  
 SYNTAX: Right(string, length)  
 ARGUMENTS: .  
 EXAMPLE: <%  
strTest = "This is an test!" 
response.write Right(strTest, 3) 
%>  
 RESULT: st!  
  
Rnd()  
 FUNCTION: 产生一个随机数.  
 SYNTAX: Rnd [ (number) ]  
 ARGUMENTS:  
 EXAMPLE: <% 
Randomize() 
response.write RND() 
%>  
 RESULT: 任何一个在0 到 1 之间的数  
  
Round()  
 FUNCTION: 返回按指定位数进行四舍五入的数值.  
 SYNTAX: Round(expression [, numRight])  
 ARGUMENTS: numRight数字表明小数点右边有多少位进行四舍五入。如果省略,则  
Round 函数返回整数.  
 EXAMPLE: <% 
i = 32.45678 
response.write Round(i) 
%>  
 RESULT: 32  
  
Rtrim()  
 FUNCTION: 去掉字符串右边的字符串.  
 SYNTAX: Rtrim(string)  
 ARGUMENTS:  
 EXAMPLE: <% 
strTest = "This is a test!! " 
response.write RTrim(strTest) 
%>  
 RESULT: This is a test!!  
  
Second()  
 FUNCTION: 返回秒.  
 SYNTAX: Second(time)  
 ARGUMENTS: .  
 EXAMPLE: <%=Second(#12:34:28 PM#)%>  
 RESULT: 28  
  
StrReverse()  
 FUNCTION: 反排一字符串  
 SYNTAX: StrReverse(string)  
 ARGUMENTS:  
 EXAMPLE: <% 
strTest = "This is a test!!" 
response.write StrReverse(strTest) 
%>  
 RESULT: !!tset a si sihT  
  
Time()  
 FUNCTION: 返回系统时间.  
 SYNTAX: Time()  
 ARGUMENTS: .  
 EXAMPLE: <%=Time%>  
 RESULT: 9:58:28 AM  
  
Trim()  
 FUNCTION: 去掉字符串左右的空格.  
 SYNTAX: Trim(string)  
 ARGUMENTS: string is any valid string expression.  
 EXAMPLE: <% 
strTest = " This is a test!! " 
response.write Trim(strTest) 
%>  
 RESULT: This is a test!!  
  
UBound()  
 FUNCTION: 返回指定数组维数的最大可用下标.  
 SYNTAX: Ubound(arrayname [, dimension])  
 ARGUMENTS: ; dimension (optional) 指定返回哪一维上界的整数。1 表示第一 
维,2 表示第二维,以此类推。如果省略 dimension 参数,则默认值为 1.  
 EXAMPLE: <% 
i = Array("Monday","Tuesday","Wednesday") 
response.write UBound(i) 
%>  
 RESULT: 2  
  
UCase()  
 FUNCTION: 返回字符串的大写形式.  
 SYNTAX: UCase(string)  
 ARGUMENTS:  
 EXAMPLE: <% 
strTest = "This is a test!!" 
response.write UCase(strTest) 
%>  
 RESULT: THIS IS A TEST!!  
  
VarType()  
 FUNCTION: 返回指示变量子类型的值  
 SYNTAX: VarType(varName)  
 ARGUMENTS:  
 EXAMPLE: <% 
i = 3 
response.write varType(i) 
%>  
 RESULT: 2(数字)详见"asp常数"  
  
WeekDay()  
 FUNCTION: 返回在一周的第几天.  
 SYNTAX: WeekDay(date [, firstdayofweek])  
 ARGUMENTS: .  
 EXAMPLE: <% 
d = #8/4/99# 
response.write Weekday(d) 
%>  
 RESULT: 4(星期三)  
  
WeekDayName()  
 FUNCTION: 返回一周第几天的名字.  
 SYNTAX: WeekDayName(weekday [, Abb ][, firstdayofweek]])  
 ARGUMENTS: Abb可选。Boolean 值,指明是否缩写表示星期各天的名称。如果省 
略, 默认值为 False,即不缩写星期各天的名称.firstdayofweek指明星期第一天的 
数值  
 EXAMPLE: <% 
d = #8/4/99# 
response.write WeekdayName(Weekday(d)) 
%>  
 RESULT: Wednesday  
  
Year()  
 FUNCTION: 返回当前的年份.  
 SYNTAX: Year(date)  
 ARGUMENTS:  
 EXAMPLE: <%=Year(#8/4/99#)%>  
 RESULT: 1999    


ASP函数大全 
  
Abs(number)  


返回绝对值。  

Array(arglist)  

创建一个数组。  

Asc(string)  

返回字符串第一个字符的ANSI码。  

Atn(number)  

返回反正弦值。  

CBool (expression)   

转换成Boolean数据类型变量。  

CByte (expression)   

转换成Byte数据类型变量。  

CCur (expression)   

转换成Currency数据类型变量。  

CDate (expression)   

转换成Date数据类型变量。  

CDbl (expression)   

转换成Double数据类型变量。  

Chr(charcode)  

把ANSI 码转换成相应的键盘字符。  

CInt (expression)   

转换成Integer数据类型变量。  

CLng (expression)   

转换成Long数据类型变量。  

CreateObject(servername.typename)  

创建一个自动对象。  

CSng (expression)   

转换成Single数据类型变量。  

CStr (expression)   

转换成String数据类型变量。  

Date  

根据所用的系统返回时间。  

DateAdd(interval,number,date)  

向date对象添加指定的时间间隔。其中参数interval 接受下表所示的值。  

设定值 
描述  

yyyy 
年  


季度  


月份  


一年的第几天  


天  


星期几  

ww 
一年的第几个星期  


小时  


分钟  


秒钟  


   

DateDiff(interval,date1,date2[,firstdayofweek[,firstweekofyear]])  

返回两个日期之间的间隔,关于firstdayofweek及firstweekofyear的值请参考下面的“日期和时间常数”一节。interval参数接受下表所示的值。  

设定值 
描述  

yyyy 
年  


季度  


月份  


一年的第几天  


天  


星期几  

ww 
一年的第几个星期  


小时  


分钟  


秒钟  


   

DatePart(interval , date[,firstdayofweek[,firstweekofyear]])   

返回Date对象指定部分。关于firstdayofweek及firstweekofyear的值请参考下面的“日期和时间常数”一节。interval参数接受下表所示的值。  

设定值 
描述  

yyyy 
年  


季度  


月份  


一年的第几天  


天  


星期几  

ww 
一年的第几个星期  


小时  


分钟  


秒钟  


   

DateSerial(year,month,day)  

转换成Date数据子类型变体值。  

Datevalue(date)  

转换成Date数据子类型变体值。  

Day(date)  

根据参数date返回该天在一个月中的号数。  

Exp(number)  

返回e的number次方的值。  

Filter(InputStrings,value[,Include[,Compare]])  

根据筛选条件创建一个新的数组。关于Compare的值,请参看后面“比较常数”一节。  

Fix(number)  

转换成一个整数(对于负数,只入不舍)。  

FormatCurrency(Expression[,NumDigitsAfterDecimal [,IncludeLeadingDigit[,UseParensForNegativeNumbers [,GroupDigit]]]])  

格式化成currency形式。关于IncludeleadingDigit,UseParensForNegativeNumbers及GroupDigit的值请参看后面“三态常数”一节。  

FormatDateTime(Date[,NamedFormat])  

对日期及时间进行格式化输出。关于NamedFormat的值请参看后面“日期格式常数”一节。  

FormatNumber(Expression[,NumDigitsAfterDecimal [,IncludeLeadingDigit[,UseParensForNegativeNumbers [,GroupDigit]]]])  

对数字进行格式化。关于IncludeleadingDigit,UseParensForNegativeNumbers及GroupDigit的值请参看后面“三态常数”一节。  

FormatPercent(Expression[,NumDigitsAfterDecimal [,IncludeLeadingDigit[,UseParensForNegativeNumbers [,GroupDigit]]]])  

对百分数进行格式化。关于IncludeleadingDigit,UseParensForNegativeNumbers及GroupDigit的值请参看后面“三态常数”一节。  

GetObject([pathname][,class])  

从指定的文件中返回指定的动态对象。  

Hex(number)  

返回数number的十六进制的值。  

Hour(time)  

根据参数time的值返回小时。  

InputBox(prompt[,title][,default][,xpos][,ypos][,helpfile,context])  

显示一个临时的输入框,并且返回用户的输入。  

InStr([start,]string1,string2[,compare])   

返回字符串string2在字符串string1中第一次出现的位置。关于compare的值请参看后面的“比较常数”一节。  

InStrRev(string1,string2 [start [,compare]])   

返回字符串string2在字符串string1中最后出现的位置。关于compare的值请参看后面的“比较常数”一节。  

Int(number)  

返回一个整数(负数只舍不入)。  

IsArray(varname)  

确定变量是否是一个数组。  

IsDate(expression)  

确定表达式expression能否转换成日期格式。  

IsEmpty(varname)  

确定变量是否已经初始化了。  

IsNull(expression)  

确定表达式expression是否为空。  

IsNumberic(expression)  

确定表达式expression的结果是否是一个数。  

IsObject(expression)  

确定表达式expression是否是一个自动对象。  

Join(list,[,delimiter])  

把一个数组中的所有子字符串连接起来,连接所用的分隔符由delimiterd的值设定。  

LBound(arrayname[,dimension])  

返回数组某维的最低界限。在当前的VBScript版本中,该函数总是返回值0。  

Lcase(string)  

以小写字符格式化。  

Left(string,length)  

返回指定长度的字符串string左部分。  

Len(string|varname)  

返回字符串string的长度或变量varname的字节长度。  

LoadPicture(pitcurename)  

载入一个图片对象。  

Log(number)  

返回数number的自然对数值。  

Ltrim(string)  

删除字符串string左边多余的空格。  

Mid(strin,start[,length])  

返回指定长度的字符串string的子串。  

Minute(time)  

根据参数time的值返回分钟的值。  

Month(date)  

返回以数字表示的月份。  

MonthName(month[,abbreviate])  

返回以名称表示的月份。  

MsgBox(prompt[,buttons][,title][helpfile,context])  

显示一个消息框,要求用户选择一个按钮,返回能指明用户所做选择的值。关于button的值和返回值请参看后面“消息框常数”一节。  

Now  

根据系统,返回当前的日期和时间。  

Oct(number)  

返回数number的八进制值。  

Replace(expression,find,replacewith[,start[,count[,compare]]])  

用指定的子字符串replacewith替换指定的子字符串find指定的次数。关于参数compare的值请参看后面“比较常数”一节。  

Right(string,length)  

返回指定长度的字符串string的右部分子串。  

Rnd([number])  

产生一个随机数。  

Round(number[,numdecimalplaces])  

根据指定的十进制位数对数number进行四舍五入。  

RTrim(string)  

删除字符串string右边多余的空格。  

ScriptEngine  

返回使用的脚本语言的名称。  

ScriptEngineBuildVersion  

返回使用的脚本引擎版本。  

ScriptEngineMaorVersion  

返回使用的脚本引擎的大版本号。  

Second(time)  

根据参数time的值返回该分的第几秒。  

Sgn(number)  

返回数number的正负号。  

Sin(number)  

返回数number的正弦值。  

Space(number)  

用指定数量的空格创建字符串。  

Split(expression[,delimiter[,count[,compare]]])  

把一个字符串分割并转换成数组。关于compare的值请参看后面“比较常数”一节。  

Sqr(number)  

返回数number的平方根值。  

StrComp(string1,string2[,compare])  

字符串比较。关于compare的值请参看后面“比较常数”一节。  

StrReverse(string1)  

对字符串string1进行倒序。  

String(number,character)  

用number个字符character创建字符串。  

Tan(number)  

返回数number的正切。  

Time  

根据系统返回当前时间。  

TimeSerial(hour,minute,second)  

返回Date变量体。  

Timevalue(time)  

返回包含时间的Date变量体。  

Trim(string)  

删除字符串string两边的多余空格。  

TypeName(varname)  

返回子类型的名称。关于返回值请参看后面“变量类型常数”一节。  

UBound(arrayname[,dimension])  

返回数组某维的上边界。缺省维数时,为第一维。  

Ucase(string)  

用大写字母格式格式化字符串string。  

VarType(varname)  

返回子类型的值。关于返回值请参看后面“变量类型常数”一节。  

Weekday(date,[firstdayofweek])  

用数字形式返回星期几。关于参数firstdayofweek的值请参看后面“变量类型常数”一节。  

WeekDayName(weekday,abbreviate,firstdayofweek)  

用名称形式返回星期几。关于参数firstdayofweek的值请参看后面“变量类型常数”一节。  

Year(date)  

根据参数date返回年份。 

asp 中处理文件上传以及删除时常用的自定义函数:   


  <%  
  ’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’  
  ’所有自定义的VBS函数  
  ’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’  
  function DeleteFile(Filename) ’删除文件  
  if Filename<>"" then  
  Set fso = server.CreateObject("Scripting.FileSystemObject")  
  if fso.FileExists(Filename) then  
  fso.DeleteFile Filename  
  end if  
  set fso = nothing  
  end if  
  end function  
  ’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’  
  function CreateDIR(byval LocalPath) ’建立目录的程序,如果有多级目录,则一级一级的创建  
  on error resume next  
  LocalPath = replace(LocalPath,"\","/")  
  set FileObject = server.createobject("Scripting.FileSystemObject")  
  patharr = split(LocalPath,"/")  
  path_level = ubound(patharr)  
  for i = 0 to path_level  
  if i=0 then pathtmp=patharr(0) & "/" else pathtmp = pathtmp & patharr(i) & "/"  
  cpath = left(pathtmp,len(pathtmp)-1)  
  if not FileObject.FolderExists(cpath) then FileObject.CreateFolder cpath  
  next  
  set FileObject = nothing  
  if err.number<>0 then  
  CreateDIR = false  
  err.Clear  
  else  
  CreateDIR = true  
  end if  
  end function   

’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’  
  function SaveRandFileName(byval szFilename) ’根据原文件名生成新的随机文件名  
  randomize  
  ’ranNum=int(90000*rnd)+10000  
  ’if month(now)<10 then c_month="0" & month(now) else c_month=month(now)  
  ’if day(now)<10 then c_day="0" & day(now) else c_day=day(now)  
  ’if hour(now)<10 then c_hour="0" & hour(now) else c_hour=hour(now)  
  ’if minute(now)<10 then c_minute="0" & minute(now) else c_minute=minute(now)  
  ’if second(now)<10 then c_second="0" & second(now) else c_second=minute(now)  
  fileExt_a=split(szFilename,".")  
  fileExt=lcase(fileExt_a(ubound(fileExt_a)))   

  SaveRandFileName=replace(replace(replace(now,":",""),"-","")," ","")&int(10*rnd)&"."&fileExt    
  ’GenerateRandomFileName = year(now)&c_month&c_day&c_hour&c_minute&c_second&"_"&ranNum&"."&fileExt  
  end function  
  ’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’  

 function jaron_replacer(strContent,start_string,end_string,replace_string)  
  ’CMS替换函数:源字符串,前部分,后部分,替换成的字符  
  ’返回被替换后的字符串  
  jaron_replacer = replace(strContent,mid(strContent,instr(strContent,start_string),instr(strContent,end_string)+len(end_string)-1),replace_string)  
  end function  
  ’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’  
  function replaceplus(strContent,start_string,end_string,replace_string)  
  ’文档中,将所有开始,结束之间的所有字符删除  
  on error resume next  
  MARKCOUNTS = ubound(split(strContent,start_string))  
  PRESTRING = strContent  
  for i=0 to MARKCOUNTS  
  STARTMARK=instr(1,PRESTRING,start_string,1)  
  if STARTMARK=0 then exit for  
  COMPMARK=instr(1,PRESTRING,end_string,1) + len(end_string)  
  VerString=mid(PRESTRING,STARTMARK,COMPMARK - STARTMARK)  
  PRESTRING = replace(PRESTRING,VerString,replace_string)  
  next  
  replaceplus = PRESTRING  
  if err.number<>0 then err.Clear  
  end function  
  ’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’  
  %>  

检测一个字符串在另一个字符串当中出现几次的函数  


Function CheckTheChar(TheChar,TheString) 
’TheChar="要检测的字符串" 
’TheString="待检测的字符串" 
if inStr(TheString,TheChar) then 
for n =1 to Len(TheString) 
if Mid(TheString,n,Len(TheChar))=TheChar then  
CheckTheChar=CheckTheChar+1 
End if 
Next 
CheckTheChar="这个字符"&CheckTheChar&"次" 
else 
CheckTheChar="0次" 
end if 
End Function  

example: 
Response.write CheckTheChar("大家","a224大家4a434a4大家654arewr4a4a" ) 

半角<=>全角互转函数[JS版 VBS版]  


<script> 
/* 
**************************** 
*     半角<=>全角    * 
*         [NB联盟]         *  
*     Writer  YuPing       * 
**************************** 
* 参数说明: 
*  str:要转换的字符串 
*  flag:标记,为0时半转全,为非0时全转半 
*  返回值类型:字符串 
**************************** 
*/ 
function DBC2SBC(str,flag) { 
 var i; 
 var result=’’; 
 if (str.length<=0) {alert(’字符串参数出错’);return false;} 
  for(i=0;i<str.length;i++)  
  { str1=str.charCodeAt(i); 
    if(str1<125&&!flag) 
     result+=String.fromCharCode(str.charCodeAt(i)+65248); 
     else 
     result+=String.fromCharCode(str.charCodeAt(i)-65248); 
  } 
 return result; 
 } 
 //示例: 
alert(DBC2SBC("AAabc",0)); 
document.write(DBC2SBC("abcdefg",0)) 
</script> 
<input type=text value="abcdefg" id=txt><input type=button value="变" onclick=txt.value=DBC2SBC(txt.value)>  


<script language="vbscript"> 
’**************************** 
’*     半角<=>全角    * 
’*         [NB联盟]         *  
’*     Writer  YuPing       * 
’**************************** 
’* 参数说明: 
’*  str:要转换的字符串 
’*  flag:标记,为0时半转全,为非0时全转半 
’*  返回值类型:字符串 
’**************************** 
function DBC2SBC(str,flag)  
 dim i 
 if len(str)<=0 then  
     msgbox ’字符串参数出错’ 
     exit function 
 end if 
    for i=1 to len(str) 
    str1=asc(mid(str,i,1)) 
     if str1>0 and str1<=125 and not flag then  
       dbc2sbc=dbc2sbc&chr(asc(mid(str,i,1))-23680) 
     else 
       dbc2sbc=dbc2sbc&chr(asc(mid(str,i,1))+23680) 
     end if 
    next 
end function 
’示例: 
alert(dbc2sbc("AB",1)) 
</script> 

截取固定字数  


<SCRIPT RUNAT=SERVER LANGUAGE=VBSCRIPT>  
function DoTrimProperly(str, nNamedFormat, properly, pointed, points) 
  dim strRet 
  strRet = Server.HTMLEncode(str) 
  strRet = replace(strRet, vbcrlf,"") 
  strRet = replace(strRet, vbtab,"") 
  If (LEN(strRet) > nNamedFormat) Then 
    strRet = LEFT(strRet, nNamedFormat)    
    If (properly = 1) Then      
      Dim TempArray         
      TempArray = split(strRet, " ")  
      Dim n 
      strRet = "" 
      for n = 0 to Ubound(TempArray) - 1 
        strRet = strRet & " " & TempArray(n) 
      next 
    End If 
    If (pointed = 1) Then 
      strRet = strRet & points 
    End If 
  End If 
  DoTrimProperly = strRet 
End Function 
</SCRIPT>  

列如: 
<% =(DoTrimProperly((rsh.Fields.Item("n_title").value), 10, 0, 1, "...")) %>  

检验表单  


<script language="javascript"> 
<!-- 
function isEmpty(s) 

return ((s == null) || (s.length == 0)) 

function isWhitespace (s) 

var whitespace = " \t\n\r"; 
var i; 
// 以下代码判断是否有空字符 
for (i = 0; i < s.length; i++) 

var c = s.charAt(i); 
if (whitespace.indexOf(c) >= 0) 

return true; 

}  

return false; 

function isCharsInBag (s, bag) 

var i; 
for (i = 0; i < s.length; i++) 

var c = s.charAt(i); 
if (bag.indexOf(c) == -1) return false; 

return true; 

function isEmail (s) 

//判断Email是否为空 
if (isEmpty(s)) 

window.alert("输入的E-mail地址不能为空,请输入!"); 
return false; 

//判断Email中是否包含空格 
if (isWhitespace(s)) 

window.alert("输入的E-mail地址中不能包含空格符,请重新输入!"); 
return false; 

//判断Email地址长度 
var i = 1; 
var len = s.length; 
if (len > 100) 

window.alert("Email地址长度不能超过100位!"); 
return false; 

pos1 = s.indexOf("@"); 
pos2 = s.indexOf("."); 
pos3 = s.lastIndexOf("@"); 
pos4 = s.lastIndexOf("."); 
//判断Email地址中是否包含符号 "@"  
if ((pos1 <= 0)||(pos1 == len)||(pos2 <= 0)||(pos2 == len)) 

window.alert("请输入有效的E-mail地址!"); 
return false; 

else 

if( (pos1 == pos2 - 1) || (pos1 == pos2 + 1) 
|| ( pos1 != pos3 ) //find two @ 
|| ( pos4 < pos3 ) ) //. should behind the "@" 

window.alert("请输入有效的E-mail地址!"); 
return false; 


if ( !isCharsInBag( s, "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.-_@")) 

window.alert("email地址中只能包含字符ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.-_@\n" + "请重新输入" ); 
return false; 

//判断是否包含有效的字符 
/* 
var badChar = "><,[]{}?/+=|\\"\":;!#$%^&()`"; 
if ( isCharsInBag( s, badChar)) 

alert("请不要在email地址中输入字符 " + badChar + "\n" ); 
alert("请重新输入" ); 
return false; 

*/ 
return true; 

function checkdata() { 
if (document.form1.Email.value=="") { 
window.alert ("请输入您的E-mail地址 !") 
return false 

if ( !isEmail(document.form1.Email.value) ) 
return false 
if (document.form1.Pass.value=="") { 
window.alert ("请输入您的密码 !") 
return false 

if (document.form1.Pass.value.length<5) { 
window.alert ("您的密码数必须大于4位 !") 
return false 

if (document.form1.Pass.value.length>10) { 
window.alert ("您的密码数必须小于10位 !") 
return false 

if (document.form1.Comfpass.value=="") { 
window.alert ("请输入您的确认密码 !") 
return false 

if (document.form1.Pass.value!=document.form1. Comfpass.value) { 
window.alert ("您的密码不一致 !") 
return false 

if (document.form1.Pass_question.value=="") { 
window.alert ("请输入您取回密码的问题 !") 
return false 

if (document.form1. Pass_answer.value=="") { 
window.alert ("请输入您取回密码的答案!") 
return false 

if (document.form1.Name.value=="") { 
window.alert ("请输入您的真实姓名 !") 
return false 

if (document.form1.City.value=="") { 
window.alert ("请输入所在城市 !") 
return false 

if (document.form1.Address.value=="") { 
window.alert ("请输入您的详细地址 !") 
return false 

if (document.form1.Zip.value=="") { 
window.alert ("请输入您的邮编 !") 
return false 

if (document.form1.Phone.value=="") { 
window.alert ("请输入您的电话号码 !") 
return false 

if (document.form1.fax.value=="") { 
window.alert ("请输入您的传真号码 !") 
return false 

if (document.form1.mobil.value=="") { 
window.alert ("请输入您的手机号码 !") 
return false 

return true 

//--> 
</script> 
例如: 
<form name="form1" method="POST" action="/cinfocheck.asp" onSubmit="return checkdata()"> 

转换空格和回车  


<SCRIPT RUNAT=SERVER LANGUAGE=VBSCRIPT>  
function DoWhiteSpace(str)  
DoWhiteSpace = Replace((Replace(str, vbCrlf, "<br>")), chr(32)&chr(32), "  ")  
End Function  
</SCRIPT>   

例子:N_Content=DoWhiteSpace(Request.Form("N_Content"))  

按要求弹窗口转向  


if (confirm("到 a.htm 吗?")) 

window.location.href="a.htm"; 

else 

window.location.href="b.htm"; 


按钮倒记时效果  


<script language="javascript"> 
var secs = 9; 
var wait = secs * 1000; 
document.form1.rulesubmit.value = "同 意(" + secs + ")"; 
document.form1.rulesubmit.disabled = true; 
for(i = 1; i <= secs; i++) { 
        window.setTimeout("update(" + i + ")", i * 1000); 

window.setTimeout("timer()", wait); 
function update(num, value) { , ;
        if(num == (wait/1000)) { 
                document.form1.rulesubmit.value = "同 意"; 
        } else { 
                printnr = (wait / 1000)-num; 
                document.form1.rulesubmit.value = "同 意(" + printnr + ")"; 
        } 

function timer() { 
        document.form1.rulesubmit.disabled = false; 
        document.form1.rulesubmit.value = "同 意"; 

</script>  

<form name="form1" method="post" action=""> 
<input type="submit" name="rulesubmit" value="同 意" style="height: 23px"> 
</form>  

全选和取消全选  


<SCRIPT language="javascript"> 
function checkAll(bCheck) 

    var arr = document.all.chk; 
    for(var i=0; i<arr.length; i++) 
    { 
        if(!arr[i].disabled == true) 
            arr[i].checked = bCheck; 
    } 

</SCRIPT> 
<INPUT TYPE="checkbox" NAME="all" onclick="checkAll(this.checked)"><p> 
<INPUT TYPE="checkbox" NAME="chk"> 
<INPUT TYPE="checkbox" NAME="chk"> 
<INPUT TYPE="checkbox" NAME="chk" disabled> 
<INPUT TYPE="checkbox" NAME="chk"> 
<INPUT TYPE="checkbox" NAME="chk">  

在当前位置加入指定字符 
<HTML> 
     <HEAD> 
     <SCRIPT> 
     function insertAtCaret (textEl, text) { 
textEl.focus(); 
document.selection.createRange().text=text; 
     } 
     </SCRIPT> 
     </HEAD> 
     <BODY> 
     <FORM NAME="aForm"> 
     <TEXTAREA NAME="aTextArea" ROWS="5" COLS="80" WRAP="soft">测试测试测试测试测  


试测试 
     </TEXTAREA> 
     <BR> 
     <INPUT TYPE="text" NAME="aText" SIZE="80" value="要插入的文字"> 
     <BR> 
     <INPUT TYPE="button" value="insert"   

onCLICK="insertAtCaret(this.form.aTextArea,this.form.aText.value);"> 
     </FORM> 
     </BODY> 
     </HTML>  

找到2个tag之间的内容  


<% 
Function RegGetString(expression) 
Dim reg 
Set reg = New RegExp 
reg.IgnoreCase = True 
reg.Global = True 
reg.Pattern = "(.*?)<!--A-->(.*?)<!--B-->(.*?)" 
RegGetString= reg.Replace(expression,"$1<hello>$2") 
Set reg =nothing 
End Function 
%> 
<% = RegGetString("标记外1<!--A-->记录一<!--B-->标记外2<!--A-->记录二<!--B-->标记外3") %>  

ASP语法速查表  
  
作者:佚名    文章来源:不详    点击数:1302    更新时间:2004-10-16  
  
VBScript 函数  
 功能说明  
 例子  
  
Abs (数值) 绝对值。一个数字的绝对值是它的正值。空字符串 (null) 的绝对值,也是空字符串。未初始化的变数,其绝对为 0 例子:ABS(-2000)  
结果:2000  
Array (以逗点分隔的数组元素) Array 函数传回数组元素的值。 例子:  
A=Array(1,2,3) 
B=A(2) 
结果: 2 
说明:变量B为A数组的第二个元素的值。   
Asc (字符串) 将字符串的第一字母转换成 ANSI (美国国家标准符号)字码。 例子:Asc(”Internet”) 
结果:73 
说明:显示第一字母 I 的 ANSI 字码。   
CBool(表达式) 转换成布尔逻辑值变量型态(True 或False ) 例子:CBool(1+2) 
结果:True   
CDate (日期表达式) 换成日期变量型态。可先使用 IsDate 函数判断是否可以转换成日 期。 例子: CDate (now( )+2)  
结果:2000/5/28 10:30:59   
CDbl(表达式) 转换成DOUBLE变量型态。   
Chr ( ANSI 字码) 将ASCII 字码转换成字符。 例子: Chr ( 72 ) 
结果: H   
CInt (表达式) 转换成整数变量型态。 例子: CInt ("3.12")  
结果: 3   
CLng (表达式) 转换成LONG 变量型态。   
CSng (表达式) 转换成SINGLE 变量型态。   
CStr (表达式) 转换成字符串变量型态。   
Date ( )top 传回系统的日期。 例子: Date  
结果: 2000/5/13  
DateAdd ( I , N , D ) 将一个日期加上一段期间后的日期。 I :设定一个日期( Date )所加上的一段期间的单位。譬如 interval="d" 表示 N的单位为日。 I的设定值如下:  
yyyy Year 年  
q Quarter 季  
m Month 月  
d Day 日  
w Weekday 星期  
h Hour 时  
n Minute 分  
s Second 秒  
N :数值表达式,设定一个日期所加上的一段期间,可为正值或负值,正值表示加(结果为 >date 以后的日期),负值表示减(结果为 >date 以前的日期)。  
D :待加减的日期。 例子: DateAdd ( "m" , 1 , "31-Jan-98")  
结果: 28-Feb-98  
说明:将日期 31-Jan-98 加上一个月,结果为 28-Feb-98 而非 31-Fe-98 。  
例子: DateAdd ( "d" , 20 , "30-Jan-99")  
结果: 1999/2/9  
说明:将一个日期 30-Jan-99 加上 20 天后的日期。  
DateDiff (I , D1 , D2[,FW[,FY]]) 计算两个日期之间的期间。  
I :设定两个日期之间的期间计算之单位。譬如 >I="m" 表示计算的单位为月。 >I 的设定值如:  
yyyy > Year 年  
q Quarter 季  
m Month 月  
d Day 日  
w Weekday 星期  
h Hour 时  
m Minute 分  
s Second 秒  
D1 ,D2:计算期间的两个日期表达式,若 >date1 较早,则两个日期之间的期间结果为正值;若 >date2 较早, 则结果为负值。  
FW :设定每周第一天为星期几, 若未设定表示为星期天。 >FW 的设定值如下:  
0 使用 >API 的设定值。  
1 星期天  
2 星期一  
3 星期二  
4 星期三  
5 星期四  
6 星期五  
7 星期六  
FY :设定一年的第一周, 若未设定则表示一月一日那一周为一年的第一周。 >FY 的设定值如下:  
0 使用 >API 的设定值。  
1 一月一日那一周为一年的第一周  
2 至少包括四天的第一周为一年的第一周  
3 包括七天的第一周为一年的第一周 例子: DateDiff ("d","25-Mar-99 ","30-Jun-99 ")  
结果: 97  
说明:显示两个日期之间的期间为 97 天。  
DatePart (I,D,[,FW[,FY]]) 传回一个日期的之部份。  
>I :设定传回那一部份。譬如 >I="d" 表示传回 部份为日。 >I 的设定值如下:  
yyyy Year 年  
q Quarter 季  
m Month 月  
d Day 日  
w Weekday 星期  
h Hour 时  
m Minute 分  
s Second 秒  
D :待计算的日期。  
>FW :设定每周第一天为星期几, 若未设定则表示为星期天。 >FW 的设定值如下:  
0 使用 >API 的设定值。  
1 星期天  
2 星期一>3 星期二  
4 星期三  
5 星期四  
6 星期五  
7 星期六  
FY :设定一年的第一周, 若未设定则表示一月一日那一周为一年的第一周。 >FY 的设定值如下:  
0 使用 >API 的设定值。  
1 一月一日那一周为一年的第一周  
2 至少包括四天的第一周为一年的第一周  
3 包括七天的第一周为一年的第一周 例子: DatePart ("m","25-Mar-99 ")  
结果: 3  
说明:显示传回一个日期 的月部份。  
Dateserial (year,month,day) 转换(year,month,day) 成日期变量型态。 例子: DateSerial (99,10,1)  
结果: 1999/10/1  
Datevalue ( 日期的字符串或表达式 ) 转换成日期变量型态,日期从 January 1,100 到 December 31,9999 。格式为 month,day,and year 或 month/day/year 。譬如: December 30,1999 、 Dec 30,1999 、 12/30/1999 、 12/30/99 例子: Datevalue ("January 1,2002 ")  
结果: 2002/1/1  
Day( 日期的字符串或表达式 ) 传回日期的「日」部份。 例子: Day(" 12/1/1999 ")  
结果: 1  
Fix( 表达式 )top 转换字符串成整数数字型态。与 Int 函数相同。若为 null 时传回 null 。  
Int (number) 与 Fix(number) 的差别在负数。如 Int (-5.6)=-6 , Fix(-5.6)=-5 。 例子: Fix(5.6)  
结果: 5  
Hex( 表达式 )top 传回数值的十六进制值。若表达式为 null 时 Hex( 表达式 )=null ,若表达式 =Empty 时 Hex( 表达式 )=0 。 16 进位可以加「 &H 」表示,譬如 16 进位 &H10 表示十进制的 16 。 例子: Hex(30)  
结果: 1E  
Hour( 时间的字符串或表达式 ) 传回时间的「小时」部份。 例子: Hour("12:30:54 ")  
结果: 12  
InStr ([start,]string1,string2[,compare]) top 将一 个 字符串由左 而右与另一个比较,传回第一个相同的位置。  
start 为从第几个字比较起,若省略 start 则从第一个字比较起, string1 为待寻找的字符串表达式, string2 为 待比较的字符串表达式, compare 为比较的方法, compare=0 表二进制比较法, compare=1 表文字比较法,若省略 compare 则为预设的二进制比较法。 例子: InStr("abc123def123","12")  
结果: 4  
InstrRev ([start,]string1,string2[,compare]) 将一 个 字符串 由右而左与另一个比较,传回第一个相同的位置。  
start 为从第几个字比较起,若省略 start 则从第一个字比较起, string1 为待寻找的字符串表达式, string2 为 待比较的字符串表达式, compare 为比较的方法, compare=0 表二进制比较法, compare=1 表文字比较法,若省略 compare 则为预设的二进制比较法。 例子: InstrRev ("abc123def123","12")  
结果: 10  
Int ( 表达式 ) 传回一个数值的整数部份。与 Fix 函数相同。 例子: Int (5.6)  
结果: 5  
IsArray ( 变数 ) 测试变量是 (True) 否 (False) 是一个数组。 例子: IsArray (3)  
结果: False  
说明:不是一个数组。  
IsDate ( 日期或字符串的表达式 ) 是否可以转换成日期。日, 期从 January 1,100 A.D. 到 December 31,9999 A.D 。 例子: IsDate ("December 31,1999 ")  
结果: True  
说明:可以转换成日期。  
IsEmpty ( 变数 ) 测试变量是 (True) 否 (False) 已经被初始化 例子: IsEmpty (a)  
结果: True  
IsNull ( 变数 ) 测试变数是 (True) 否 (False) 不是有效的数据。 例子: IsNull ("")  
结果: False  
说明:是有效的数据。  
IsNumeric ( 表达式 ) 是 (True) 否 (False) 是数字。 例子: IsNumeric ("abc123")  
结果: False  
说明:不是数字。  
LCase ( 字符串表达式 ) top 转换字符串成小写。将大写字母的部份转换成小写。字符串其余的部份不变。 例子: LCase ("ABC123")  
结果: abc123  
Left( 字符串表达式 ,length) 取字符串左边的几个字。 length 为取个字。 Len 函数可得知字符串的长度。 例子: Left("ABC123",3)  
结果: ABC  
Len( 字符串表达式 变量 ) 取得字符串的长度。 例子: Len("ABC123")  
结果: 6  
LTrim ( 字符串表达式 ) 除去字符串左边的空白字。 RTrim 除去字符串右边的空白字, Trim 函数除去字符串左右两边的空白字。 例子: LTrim ("456+" abc ")  
结果: 456abc123  
Mid( 字符串表达式 ,start[,length]) top 取字符串中的几个字。 start 为从第几个 字取起, length 为取几个字, 若略 length 则从 start 取到最右底。由Len 函数可得知字符串的长度。 例子: Mid("abc123",2,3)  
结果: c12  
Minute( 日期的字符串或表达式 ) 传回时间的「分钟」部份。 例子: Minute("12:30:54")  
结果:30  
Month(日期的字符串或表达式) 传回日期的「月」部份。 例子:Month("12/1/2001")  
结果:12  
MonthName(month[,abbreviate]) 传回月的名称。  
month :待传回月名称的数字 1~12 。譬如, 1 代表一月, 7 代表七月。  
abbreviate: 是 (True) 否 (False) 为缩写,譬如 March ,缩写为 Mar 。默认值为 False 。中文的月名称无缩写。 例子: MonthName (7)  
结果:七月  
Now() 传回系统的日期时间。 例子: Now()  
结果: 2001/12/30 10:35:59 AM  
Oct() 传回数值的八进位值。八进位可以加「 &O 」表示,譬如八进位 &O10 表示十进制的 8 。 例子: Oct(10)  
结果: 12  
Replace( 字符串表达式,findnreplacewith[,start[,count[,compare]]])  将一个字符串取代 部份字。寻找待取代的原字符串 (find) , 若找到则被取代为新字符串 (replacewith) 。  
find :待寻找取代的原字符串。  
replacewith :取代后的字。  
start :从第几个字开始寻找取代, 若未设定则由第一个字开始寻找。  
count :取代的次数。 若未设定则所有寻找到的字符串取代字符 串全部被取代。  
compare :寻找比较的方法, compare=0 表示二进制比较法, compare=1 表文字比较法, compare =2 表根据比较的 数据型态而定,若省略 compare 则为预设的二进制比较法。 例子: Replace("ABCD123ABC","AB","ab")  
结果: abCD123abC  
Right( 字符串表达式 ,length) 取字符串右边的几个字, length 为取几个字。 Len 函数可得知字符串的长度。 例子: Right("ABC123",3)  
结果: 123  
Rnd [(number)] 0~1 的 随机随机数值。 number 是任何有效的数值表达式。若 number 小于 0 表示每次得到相同的 随机随机数值。 number 大于 0 或未提供时表示依序得到下一个 随机随机数值。 >number=0 表示得到最近产生的 随机随机数值。为了避免得到相同的随机随机数顺序,可以于 Rnd 函数前加 Randomize 。 例子: Rnd  
结果: 0.498498  
Round( 数值表达式 [,D]) 四舍五入。  
D :为四舍五入到第几位小数,若省略则四舍五入到整数。 例子: Round(30635,1)  
结果: 3.6  
RTrim ( 字符串表达式 ) 除去字符串右边的空白字。 LTrim 除去字符串左边的空白字, Trim 函数除去字符串左右两边的空白字。 例子: RTrim ("abc123 ")+"456"  
结果: abc123456  
Second( 时间的字符串或表达式 )top 传回时间的「秒」部份。 例子:Second("12:30:54")  
结果:54  
Space( 重复次数 ) 得到重复相同的空白字符串。 例子: A"+Space (5)+"B  
结果: A B  
说明: A 和 B 中间加入五个空白字。  
String( 重复次数,待重复的字 ) 得到重复相同的字符串。 例子: String(5,71)  
结果: GGGGG  
StrReverse (String(10,71)) 将一个字符串顺序颠倒。 例子: StrReverse ("ABC")  
结果: CBA  
Time() 传回系统的时间。 例子: Time  
结果: 10:35:59 PM  
TimeSerial (hour,minute,second) 转换指定的 ( hour,minute,second) 成时间 变量型态。 例子: TimeSerial (10,31,59)  
结果: 10:31:59  
Timevalue ( 日期的字符串或表达式 ) 转换 成时间变量型态。日期的字符串或表达式从 0:00:00(12:00:00 A.M.) 到 23:59:59(11:59:59 P.M.) 。 例子: Timevalue (" 11:59:59 ")  
结果: 11:59:59  
Trim( 字符串表达式 ) 除去字符串左右两边的空白字。 例子: Trim(" abc123 ")  
结果: abc123  
UCase ()top 转换字符串成大写。将小写字母的部份转换成大写,字符串其余部份不变。 例子: UCase ("abc123")  
结果: ABC123  
VarType ( 变数 ) 传回一个变量类型。与 TypeName 函数相同, VarType 传回变量类型的代码, TypeName 传回变量类型的名称。 例子: VarType ( "I love you!")  
结果: 8  
Weekday( 日期表达式 ,[FW])  传回星期几的数字。  
FW :设定一周的第一天是星期几。若 省略则表 1( 星期日 ) 。  
Firstdayfweek 设定值为: 1( 星期日 ),2( 星期一 ),3( 星期二 ),4( 星期三 ),5( 星期四 ),6( 星期五 ),7( 星期六 ) 。 例子: Weekday(" 1/1/2000")  
结果: 7  
WeekDayName (W,A,FW) 传回星期几的名称。  
W :是 (True) 否 (False) 为缩写。譬如 March ,缩写为 Mar 。预设为 False 。中文的星期几名称无缩写。  
FW :设定一周的第一天是星期几。 若省略表 1( 星期日 ) 。设定待传回星期几的名称,为一周中的第几天。  
A : 1( 星期日 ),2( 星期一 ),3( 星期二 ),4( 星期三 ),5( 星期四 ),6( 星期五 ),7( 星期六 ) 。 例子: WeekDayName ("1/1/2000")  
结果:星期六  
Year() 传回日期的「年」部份。 例子: Year(" 12/1/2000 ")  
结果: 2000  

ASP函数详解(1) 
http://www.yzcc.com/2005/1-16/09311124554.html 
Array() 
  FUNCTION: 返回一个数组 
  SYNTAX: Array(list) 
  ARGUMENTS: 字符,数字均可 
  EXAMPLE: <% 
  Dim myArray() 
  For i = 1 to 7 
  Redim Preserve myArray(i) 
  myArray(i) = WeekdayName(i) 
  Next 
  %> 
  RESULT: 建立了一个包含7个元素的数组myArray 
  myArray("Sunday","Monday", ... ... "Saturday")  


CInt() 
  FUNCTION: 将一个表达式转化为数字类型 
  SYNTAX: CInt(expression) 
  ARGUMENTS: 任何有效的字符均可 
  EXAMPLE: <% 
  f = "234" 
  response.write cINT(f) + 2 
  %> 
  RESULT: 236 
  转化字符"234"为数字"234",如果字符串为空,则返回0值  

CreateObject() 
  FUNCTION: 建立和返回一个已注册的ACTIVEX组件的实例。 
  SYNTAX: CreateObject(objName) 
  ARGUMENTS: objName 是任何一个有效、已注册的ACTIVEX组件的名字. 
  EXAMPLE: <% 
  Set con = Server.CreateObject("ADODB.Connection") 
  %> 
  RESULT:  

CStr() 
  FUNCTION: 转化一个表达式为字符串. 
  SYNTAX: CStr(expression) 
  ARGUMENTS: expression 是任何有效的表达式。 
  EXAMPLE: <% 
  s = 3 + 2 
  response.write "The result is: " & cStr(s) 
  %> 
  RESULT: 转化数字“5”为字符“5”。  

Date() 
  FUNCTION: 返回当前系统日期. 
  SYNTAX: Date() 
  ARGUMENTS: None. 
  EXAMPLE: <%=Date%> 
  RESULT: 8/4/99  

DateAdd() 
  FUNCTION: 返回一个被改变了的日期。 
  SYNTAX: DateAdd(timeinterval,number,date) 
  ARGUMENTS: timeinterval is the time interval to add; number is amount of time intervals to add; and date is the starting date. 
  EXAMPLE: <% 
  currentDate = #8/4/99# 
  newDate = DateAdd("m",3,currentDate) 
  response.write newDate 
  %>  

  <% 
  currentDate = #12:34:45 PM# 
  newDate = DateAdd("h",3,currentDate) 
  response.write newDate 
  %> 
  RESULT: 11/4/99 
  3:34:45 PM  

  "m" = "month"; 
  "d" = "day";  

  If currentDate is in time format then, 
  "h" = "hour"; 
  "s" = "second";  

DateDiff() 
  FUNCTION: 返回两个日期之间的差值 。 
  SYNTAX: DateDiff(timeinterval,date1,date2 [, firstdayofweek [, firstweekofyear]]) 
  ARGUMENTS: timeinterval 表示相隔时间的类型,如“M“表示“月”。 
  EXAMPLE: <% 
  fromDate = #8/4/99# 
  toDate = #1/1/2000# 
  response.write "There are " & _ 
  DateDiff("d",fromDate,toDate) & _ 
  " days to millenium from 8/4/99." 
  %> 
  RESULT: 从8/4/99 到2000年还有 150 天.  

Day() 
  FUNCTION: 返回一个月的第几日 . 
  SYNTAX: Day(date) 
  ARGUMENTS: date 是任何有效的日期。 
  EXAMPLE: <%=Day(#8/4/99#)%> 
  RESULT: 4  

FormatCurrency() 
  FUNCTION: 返回表达式,此表达式已被格式化为货币值 
  SYNTAX: FormatCurrency(Expression [, Digit [, LeadingDigit [, Paren [, GroupDigit]]]]) 
  ARGUMENTS: Digit 指示小数点右侧显示位数的数值。默认值为 -1,指示使用的是计算机的区域设置;   LeadingDigit 三态常数,指示是否显示小数值小数点前面的零。 
  EXAMPLE: <%=FormatCurrency(34.3456)%> 
  RESULT: $34.35  

FormatDateTime() 
  FUNCTION: 返回表达式,此表达式已被格式化为日期或时间 
  SYNTAX: FormatDateTime(Date, [, NamedFormat]) 
  ARGUMENTS: NamedFormat 指示所使用的日期/时间格式的数值,如果省略,则使用 vbGeneralDate. 
  EXAMPLE: <%=FormatDateTime("08/4/99", vbLongDate)%> 
  RESULT: Wednesday, August 04, 1999  

FormatNumber() 
  FUNCTION: 返回表达式,此表达式已被格式化为数值. 
  SYNTAX: FormatNumber(Expression [, Digit [, LeadingDigit [, Paren [, GroupDigit]]]]) 
  ARGUMENTS: Digit 指示小数点右侧显示位数的数值。默认值为 -1,指示使用的是计算机的区域设置。; LeadingDigit i指示小数点右侧显示位数的数值。默认值为 -1,指示使用的是计算机的区域设置。; Paren 指示小数点右侧显示位数的数值。默认值为 -1,指示使用的是计算机的区域设置。; GroupDigit i指示小数点右侧显示位数的数值。默认值为 -1,指示使用的是计算机的区域设置。. 
  EXAMPLE: <%=FormatNumber(45.324567, 3)%> 
  RESULT: 45.325  

FormatPercent() 
  FUNCTION: 返回表达式,此表达式已被格式化为尾随有 % 符号的百分比(乘以 100 )。 (%) 
  SYNTAX: FormatPercent(Expression [, Digit [, LeadingDigit [, Paren [, GroupDigit]]]]) 
  ARGUMENTS: 同上. 
  EXAMPLE: <%=FormatPercent(0.45267, 3)%> 
  RESULT: 45.267%  

Hour() 
  FUNCTION: 以24时返回小时数. 
  SYNTAX: Hour(time) 
  ARGUMENTS: 
  EXAMPLE: <%=Hour(#4:45:34 PM#)%> 
  RESULT: 16 
  (Hour has been converted to 24-hour system)  

Instr() 
  FUNCTION: 返回字符或字符串在另一个字符串中第一次出现的位置. 
  SYNTAX: Instr([start, > strToBeSearched, strSearchFor [, compare>) 
  ARGUMENTS: Start为搜索的起始值,strToBeSearched接受搜索的字符串 strSearchFor要搜索的字符compare 比较方式(详细见ASP常数) 
  EXAMPLE: <% 
  strText = "This is a test!!" 
  pos = Instr(strText, "a") 
  response.write pos 
  %> 
  RESULT: 9  

InstrRev() 
  FUNCTION: 同上,只是从字符串的最后一个搜索起 
  SYNTAX: InstrRev([start, > strToBeSearched, strSearchFor [, compare]) 
  ARGUMENTS: 同上. 
  EXAMPLE: <% 
  strText = "This is a test!!" 
  pos = InstrRev(strText, "s") 
  response.write pos 
  %> 
  RESULT: 13  


Int() 
  FUNCTION: 返回数值类型,不四舍五入。 
  SYNTAX: Int(number) 
  ARGUMENTS: 
  EXAMPLE: <%=INT(32.89)%> 
  RESULT: 32  

IsArray() 
  FUNCTION: 判断一对象是否为数组,返回布尔值 . 
  SYNTAX: IsArray(name) 
  ARGUMENTS: 
  EXAMPLE: <% 
  strTest = "Test!" 
  response.write IsArray(strTest) 
  %> 
  RESULT: False  

IsDate() 
  FUNCTION: 判断一对象是否为日期,返回布尔值 
  SYNTAX: IsDate(expression) 
  ARGUMENTS: expression is any valid expression. 
  EXAMPLE: <% 
  strTest = "8/4/99" 
  response.write IsDate(strTest) 
  %> 
  RESULT: True  

IsEmpty() 
  FUNCTION: 判断一对象是否初始化,返回布尔值. 
  SYNTAX: IsEmpty(expression) 
  ARGUMENTS: 
  EXAMPLE: <% 
  Dim i 
  response.write IsEmpty(i) 
  %> 
  RESULT: True  

IsNull() 
  FUNCTION: 判断一对象是否为空,返回布尔值. 
  SYNTAX: IsNull(expression) 
  ARGUMENTS: 
  EXAMPLE: <% 
  Dim i 
  response.write IsNull(i) 
  %> 
  RESULT: False 
   
  IsNumeric() 
  FUNCTION: 判断一对象是否为数字,返回布尔值. 
  SYNTAX: IsNumeric(expression) 
  ARGUMENTS: 
  EXAMPLE: <% 
  i = "345" 
  response.write IsNumeric(i) 
  %> 
  RESULT: True 
  就算数字加了引号,ASP还是认为它是数字。  

IsObject() 
  FUNCTION: 判断一对象是否为对象,返回布尔值. 
  SYNTAX: IsObject(expression) 
  ARGUMENTS: 
  EXAMPLE: <% 
  Set con = Server.CreateObject("ADODB.Connection") 
  response.write IsObject(con) 
  %> 
  RESULT: True  


LBound() 
  FUNCTION: 返回指定数组维的最小可用下标. 
  SYNTAX: Lbound(arrayname [, dimension]) 
  ARGUMENTS: dimension 指明要返回哪一维下界的整数。使用 1 表示第一维,2 表示第二维,以此类  推。如果省略 dimension 参数,默认值为 1. 
  EXAMPLE: <% 
  i = Array("Monday","Tuesday","Wednesday") 
  response.write LBound(i) 
  %> 
  RESULT: 0  

LCase() 
  FUNCTION: 返回字符串的小写形式 
  SYNTAX: Lcase(string) 
  ARGUMENTS: string is any valid string expression. 
  EXAMPLE: <% 
  strTest = "This is a test!" 
  response.write LCase(strTest) 
  %> 
  RESULT: this is a test!  

Left() 
  FUNCTION: 返回字符串左边第length个字符以前的字符(含第length个字符). 
  SYNTAX: Left(string, length) 
  ARGUMENTS: 
  EXAMPLE: <% 
  strTest = "This is a test!" 
  response.write Left(strTest, 3) 
  %> 
  RESULT: Thi  

Len() 
  FUNCTION: 返回字符串的长度. 
  SYNTAX: Len(string | varName) 
  ARGUMENTS: 
  EXAMPLE: <% 
  strTest = "This is a test!" 
  response.write Len(strTest) 
  %> 
  RESULT: 15  

LTrim() 
  FUNCTION: 去掉字符串左边的空格. 
  SYNTAX: LTrim(string) 
  ARGUMENTS: 
  EXAMPLE: <% 
  strTest = " This is a test!" 
  response.write LTrim(strTest) 
  %> 
  RESULT: This is a test!  

Mid() 
  FUNCTION: 返回特定长度的字符串(从start开始,长度为length). 
  SYNTAX: Mid(string, start [, length]) 
  ARGUMENTS: 
  EXAMPLE: <% 
  strTest = "This is a test! Today is Monday." 
  response.write Mid(strTest, 17, 5) 
  %> 
  RESULT: Today  

Minute() 
  FUNCTION: 返回时间的分钟 
  SYNTAX: Minute(time) 
  ARGUMENTS: 
  EXAMPLE: <%=Minute(#12:45:32 PM#)%> 
  RESULT: 45  

Month() 
  FUNCTION: 返回日期. 
  SYNTAX: Month(date) 
  ARGUMENTS: date is any valid date expression. 
  EXAMPLE: <%=Month(#08/04/99#)%> 
  RESULT: 8  

MonthName() 
  FUNCTION: Returns a string identifying the specified month. 
  SYNTAX: MonthName(month, [, Abb〕) 
  ARGUMENTS: month is the numeric representation for a given month; Abb (optional) is a boolean value used to display month abbreviation. True will display the abbreviated month name and False (default) will not show the abbreviation. 
  EXAMPLE: <%=MonthName(Month(#08/04/99#))%> 
  RESULT: August  

Now() 
  FUNCTION: Returns the current system date and time. 
  SYNTAX: Now() 
  ARGUMENTS: None 
  EXAMPLE: <%=Now%> 
  RESULT: 8/4/99 9:30:16 AM  

Replace() 
  FUNCTION: Returns a string in which a specified sub-string has been replaced with another substring a specified number of times. 
  SYNTAX: Replace(strToBeSearched, strSearchFor, strReplaceWith [, start [, count [, compare]]]) 
  ARGUMENTS: strToBeSearched is a string expression containing a sub-string to be replaced; strSearchFor is the string expression to search for within strToBeSearched; strReplaceWith is the string expression to replace sub-string strSearchFor; start (optional) is the numeric character position to begin search; count (optional) is a value indicating the comparision constant. 
  EXAMPLE: <% 
  strTest = "This is an apple!" 
  response.write Replace(strTest, "apple", "orange") 
  %> 
  RESULT: This is an orange!  

Right() 
  FUNCTION: 返回字符串右边第length个字符以前的字符(含第length个字符). 
  SYNTAX: Right(string, length) 
  ARGUMENTS: . 
  EXAMPLE: <% 
  strTest = "This is an test!" 
  response.write Right(strTest, 3) 
  %> 
  RESULT: st!  

Rnd() 
  FUNCTION: 产生一个随机数. 
  SYNTAX: Rnd [ (number) ] 
  ARGUMENTS: 
  EXAMPLE: <% 
  Randomize() 
  response.write RND() 
  %> 
  RESULT: 任何一个在0 到 1 之间的数  

Round() 
  FUNCTION: 返回按指定位数进行四舍五入的数值. 
  SYNTAX: Round(expression [, numRight]) 
  ARGUMENTS: numRight数字表明小数点右边有多少位进行四舍五入。如果省略,则 Round 函数返回整数. 
  EXAMPLE: <% 
  i = 32.45678 
  response.write Round(i) 
  %> 
  RESULT: 32 


ASP函数详解(1) 
http://www.yzcc.com/2005/1-16/09311124554.html 
Array() 
  FUNCTION: 返回一个数组 
  SYNTAX: Array(list) 
  ARGUMENTS: 字符,数字均可 
  EXAMPLE: <% 
  Dim myArray() 
  For i = 1 to 7 
  Redim Preserve myArray(i) 
  myArray(i) = WeekdayName(i) 
  Next 
  %> 
  RESULT: 建立了一个包含7个元素的数组myArray 
  myArray("Sunday","Monday", ... ... "Saturday")  

CInt() 
  FUNCTION: 将一个表达式转化为数字类型 
  SYNTAX: CInt(expression) 
  ARGUMENTS: 任何有效的字符均可 
  EXAMPLE: <% 
  f = "234" 
  response.write cINT(f) + 2 
  %> 
  RESULT: 236 
  转化字符"234"为数字"234",如果字符串为空,则返回0值  

CreateObject() 
  FUNCTION: 建立和返回一个已注册的ACTIVEX组件的实例。 
  SYNTAX: CreateObject(objName) 
  ARGUMENTS: objName 是任何一个有效、已注册的ACTIVEX组件的名字. 
  EXAMPLE: <% 
  Set con = Server.CreateObject("ADODB.Connection") 
  %> 
  RESULT:  

CStr() 
  FUNCTION: 转化一个表达式为字符串. 
  SYNTAX: CStr(expression) 
  ARGUMENTS: expression 是任何有效的表达式。 
  EXAMPLE: <% 
  s = 3 + 2 
  response.write "The result is: " & cStr(s) 
  %> 
  RESULT: 转化数字“5”为字符“5”。  

Date() 
  FUNCTION: 返回当前系统日期. 
  SYNTAX: Date() 
  ARGUMENTS: None. 
  EXAMPLE: <%=Date%> 
  RESULT: 8/4/99  

DateAdd() 
  FUNCTION: 返回一个被改变了的日期。 
  SYNTAX: DateAdd(timeinterval,number,date) 
  ARGUMENTS: timeinterval is the time interval to add; number is amount of time intervals to add; and date is the starting date. 
  EXAMPLE: <% 
  currentDate = #8/4/99# 
  newDate = DateAdd("m",3,currentDate) 
  response.write newDate 
  %>  

  <% 
  currentDate = #12:34:45 PM# 
  newDate = DateAdd("h",3,currentDate) 
  response.write newDate 
  %> 
  RESULT: 11/4/99 
  3:34:45 PM  

  "m" = "month"; 
  "d" = "day";  

  If currentDate is in time format then, 
  "h" = "hour"; 
  "s" = "second";  

DateDiff() 
  FUNCTION: 返回两个日期之间的差值 。 
  SYNTAX: DateDiff(timeinterval,date1,date2 [, firstdayofweek [, firstweekofyear]]) 
  ARGUMENTS: timeinterval 表示相隔时间的类型,如“M“表示“月”。 
  EXAMPLE: <% 
  fromDate = #8/4/99# 
  toDate = #1/1/2000# 
  response.write "There are " & _ 
  DateDiff("d",fromDate,toDate) & _ 
  " days to millenium from 8/4/99." 
  %> 
  RESULT: 从8/4/99 到2000年还有 150 天.  

Day() 
  FUNCTION: 返回一个月的第几日 . 
  SYNTAX: Day(date) 
  ARGUMENTS: date 是任何有效的日期。 
  EXAMPLE: <%=Day(#8/4/99#)%> 
  RESULT: 4  

FormatCurrency() 
  FUNCTION: 返回表达式,此表达式已被格式化为货币值 
  SYNTAX: FormatCurrency(Expression [, Digit [, LeadingDigit [, Paren [, GroupDigit]]]]) 
  ARGUMENTS: Digit 指示小数点右侧显示位数的数值。默认值为 -1,指示使用的是计算机的区域设置;   LeadingDigit 三态常数,指示是否显示小数值小数点前面的零。 
  EXAMPLE: <%=FormatCurrency(34.3456)%> 
  RESULT: $34.35  

FormatDateTime() 
  FUNCTION: 返回表达式,此表达式已被格式化为日期或时间 
  SYNTAX: FormatDateTime(Date, [, NamedFormat]) 
  ARGUMENTS: NamedFormat 指示所使用的日期/时间格式的数值,如果省略,则使用 vbGeneralDate. 
  EXAMPLE: <%=FormatDateTime("08/4/99", vbLongDate)%> 
  RESULT: Wednesday, August 04, 1999  

FormatNumber() 
  FUNCTION: 返回表达式,此表达式已被格式化为数值. 
  SYNTAX: FormatNumber(Expression [, Digit [, LeadingDigit [, Paren [, GroupDigit]]]]) 
  ARGUMENTS: Digit 指示小数点右侧显示位数的数值。默认值为 -1,指示使用的是计算机的区域设置。; LeadingDigit i指示小数点右侧显示位数的数值。默认值为 -1,指示使用的是计算机的区域设置。; Paren 指示小数点右侧显示位数的数值。默认值为 -1,指示使用的是计算机的区域设置。; GroupDigit i指示小数点右侧显示位数的数值。默认值为 -1,指示使用的是计算机的区域设置。. 
  EXAMPLE: <%=FormatNumber(45.324567, 3)%> 
  RESULT: 45.325  

FormatPercent() 
  FUNCTION: 返回表达式,此表达式已被格式化为尾随有 % 符号的百分比(乘以 100 )。 (%) 
  SYNTAX: FormatPercent(Expression [, Digit [, LeadingDigit [, Paren [, GroupDigit]]]]) 
  ARGUMENTS: 同上. 
  EXAMPLE: <%=FormatPercent(0.45267, 3)%> 
  RESULT: 45.267%  

Hour() 
  FUNCTION: 以24时返回小时数. 
  SYNTAX: Hour(time) 
  ARGUMENTS: 
  EXAMPLE: <%=Hour(#4:45:34 PM#)%> 
  RESULT: 16 
  (Hour has been converted to 24-hour system)  

Instr() 
  FUNCTION: 返回字符或字符串在另一个字符串中第一次出现的位置. 
  SYNTAX: Instr([start, > strToBeSearched, strSearchFor [, compare>) 
  ARGUMENTS: Start为搜索的起始值,strToBeSearched接受搜索的字符串 strSearchFor要搜索的字符compare 比较方式(详细见ASP常数) 
  EXAMPLE: <% 
  strText = "This is a test!!" 
  pos = Instr(strText, "a") 
  response.write pos 
  %> 
  RESULT: 9  

InstrRev() 
  FUNCTION: 同上,只是从字符串的最后一个搜索起 
  SYNTAX: InstrRev([start, > strToBeSearched, strSearchFor [, compare]) 
  ARGUMENTS: 同上. 
  EXAMPLE: <% 
  strText = "This is a test!!" 
  pos = InstrRev(strText, "s") 
  response.write pos 
  %> 
  RESULT: 13  


Int() 
  FUNCTION: 返回数值类型,不四舍五入。 
  SYNTAX: Int(number) 
  ARGUMENTS: 
  EXAMPLE: <%=INT(32.89)%> 
  RESULT: 32  

IsArray() 
  FUNCTION: 判断一对象是否为数组,返回布尔值 . 
  SYNTAX: IsArray(name) 
  ARGUMENTS: 
  EXAMPLE: <% 
  strTest = "Test!" 
  response.write IsArray(strTest) 
  %> 
  RESULT: False  

IsDate() 
  FUNCTION: 判断一对象是否为日期,返回布尔值 
  SYNTAX: IsDate(expression) 
  ARGUMENTS: expression is any valid expression. 
  EXAMPLE: <% 
  strTest = "8/4/99" 
  response.write IsDate(strTest) 
  %> 
  RESULT: True  

IsEmpty() 
  FUNCTION: 判断一对象是否初始化,返回布尔值. 
  SYNTAX: IsEmpty(expression) 
  ARGUMENTS: 
  EXAMPLE: <% 
  Dim i 
  response.write IsEmpty(i) 
  %> 
  RESULT: True  

IsNull() 
  FUNCTION: 判断一对象是否为空,返回布尔值. 
  SYNTAX: IsNull(expression) 
  ARGUMENTS: 
  EXAMPLE: <% 
  Dim i 
  response.write IsNull(i) 
  %> 
  RESULT: False 
   
  IsNumeric() 
  FUNCTION: 判断一对象是否为数字,返回布尔值. 
  SYNTAX: IsNumeric(expression) 
  ARGUMENTS: 
  EXAMPLE: <% 
  i = "345" 
  response.write IsNumeric(i) 
  %> 
  RESULT: True 
  就算数字加了引号,ASP还是认为它是数字。  

IsObject() 
  FUNCTION: 判断一对象是否为对象,返回布尔值. 
  SYNTAX: IsObject(expression) 
  ARGUMENTS: 
  EXAMPLE: <% 
  Set con = Server.CreateObject("ADODB.Connection") 
  response.write IsObject(con) 
  %> 
  RESULT: True  


LBound() 
  FUNCTION: 返回指定数组维的最小可用下标. 
  SYNTAX: Lbound(arrayname [, dimension]) 
  ARGUMENTS: dimension 指明要返回哪一维下界的整数。使用 1 表示第一维,2 表示第二维,以此类  推。如果省略 dimension 参数,默认值为 1. 
  EXAMPLE: <% 
  i = Array("Monday","Tuesday","Wednesday") 
  response.write LBound(i) 
  %> 
  RESULT: 0  

LCase() 
  FUNCTION: 返回字符串的小写形式 
  SYNTAX: Lcase(string) 
  ARGUMENTS: string is any valid string expression. 
  EXAMPLE: <% 
  strTest = "This is a test!" 
  response.write LCase(strTest) 
  %> 
  RESULT: this is a test!  

Left() 
  FUNCTION: 返回字符串左边第length个字符以前的字符(含第length个字符). 
  SYNTAX: Left(string, length) 
  ARGUMENTS: 
  EXAMPLE: <% 
  strTest = "This is a test!" 
  response.write Left(strTest, 3) 
  %> 
  RESULT: Thi  

Len() 
  FUNCTION: 返回字符串的长度. 
  SYNTAX: Len(string | varName) 
  ARGUMENTS: 
  EXAMPLE: <% 
  strTest = "This is a test!" 
  response.write Len(strTest) 
  %> 
  RESULT: 15  

LTrim() 
  FUNCTION: 去掉字符串左边的空格. 
  SYNTAX: LTrim(string) 
  ARGUMENTS: 
  EXAMPLE: <% 
  strTest = " This is a test!" 
  response.write LTrim(strTest) 
  %> 
  RESULT: This is a test!  

Mid() 
  FUNCTION: 返回特定长度的字符串(从start开始,长度为length). 
  SYNTAX: Mid(string, start [, length]) 
  ARGUMENTS: 
  EXAMPLE: <% 
  strTest = "This is a test! Today is Monday." 
  response.write Mid(strTest, 17, 5) 
  %> 
  RESULT: Today  

Minute() 
  FUNCTION: 返回时间的分钟 
  SYNTAX: Minute(time) 
  ARGUMENTS: 
  EXAMPLE: <%=Minute(#12:45:32 PM#)%> 
  RESULT: 45  

Month() 
  FUNCTION: 返回日期. 
  SYNTAX: Month(date) 
  ARGUMENTS: date is any valid date expression. 
  EXAMPLE: <%=Month(#08/04/99#)%> 
  RESULT: 8  

MonthName() 
  FUNCTION: Returns a string identifying the specified month. 
  SYNTAX: MonthName(month, [, Abb〕) 
  ARGUMENTS: month is the numeric representation for a given month; Abb (optional) is a boolean value used to display month abbreviation. True will display the abbreviated month name and False (default) will not show the abbreviation. 
  EXAMPLE: <%=MonthName(Month(#08/04/99#))%> 
  RESULT: August  

Now() 
  FUNCTION: Returns the current system date and time. 
  SYNTAX: Now() 
  ARGUMENTS: None 
  EXAMPLE: <%=Now%> 
  RESULT: 8/4/99 9:30:16 AM  

Replace() 
  FUNCTION: Returns a string in which a specified sub-string has been replaced with another substring a specified number of times. 
  SYNTAX: Replace(strToBeSearched, strSearchFor, strReplaceWith [, start [, count [, compare]]]) 
  ARGUMENTS: strToBeSearched is a string expression containing a sub-string to be replaced; strSearchFor is the string expression to search for within strToBeSearched; strRepl, aceWith is the string expression to replace sub-string strSearchFor; start (optional) is the numeric character position to begin search; count (optional) is a value indicating the comparision constant. 
  EXAMPLE: <% 
  strTest = "This is an apple!" 
  response.write Replace(strTest, "apple", "orange") 
  %> 
  RESULT: This is an orange!  

Right() 
  FUNCTION: 返回字符串右边第length个字符以前的字符(含第length个字符). 
  SYNTAX: Right(string, length) 
  ARGUMENTS: . 
  EXAMPLE: <% 
  strTest = "This is an test!" 
  response.write Right(strTest, 3) 
  %> 
  RESULT: st!  

Rnd() 
  FUNCTION: 产生一个随机数. 
  SYNTAX: Rnd [ (number) ] 
  ARGUMENTS: 
  EXAMPLE: <% 
  Randomize() 
  response.write RND() 
  %> 
  RESULT: 任何一个在0 到 1 之间的数  

Round() 
  FUNCTION: 返回按指定位数进行四舍五入的数值. 
  SYNTAX: Round(expression [, numRight]) 
  ARGUMENTS: numRight数字表明小数点右边有多少位进行四舍五入。如果省略,则 Round 函数返回整数. 
  EXAMPLE: <% 
  i = 32.45678 
  response.write Round(i) 
  %> 
  RESULT: 32 

  
http://www.bc-cn.net/Article/web/asp/jszl/200410/194.html 
ASP语法速查表  
  
作者:佚名    文章来源:不详    点击数:1474    更新时间:2004-10-16  
  
VBScript 函数  
 功能说明  
 例子  
  
Abs (数值) 绝对值。一个数字的绝对值是它的正值。空字符串 (null) 的绝对值,也是空字符串。未初始化的变数,其绝对为 0 例子:ABS(-2000)  
结果:2000  
Array (以逗点分隔的数组元素) Array 函数传回数组元素的值。 例子:  
A=Array(1,2,3) 
B=A(2) 
结果: 2 
说明:变量B为A数组的第二个元素的值。   
Asc (字符串) 将字符串的第一字母转换成 ANSI (美国国家标准符号)字码。 例子:Asc(”Internet”) 
结果:73 
说明:显示第一字母 I 的 ANSI 字码。   
CBool(表达式) 转换成布尔逻辑值变量型态(True 或False ) 例子:CBool(1+2) 
结果:True   
CDate (日期表达式) 换成日期变量型态。可先使用 IsDate 函数判断是否可以转换成日 期。 例子: CDate (now( )+2)  
结果:2000/5/28 10:30:59   
CDbl(表达式) 转换成DOUBLE变量型态。   
Chr ( ANSI 字码) 将ASCII 字码转换成字符。 例子: Chr ( 72 ) 
结果: H   
CInt (表达式) 转换成整数变量型态。 例子: CInt ("3.12")  
结果: 3   
CLng (表达式) 转换成LONG 变量型态。   
CSng (表达式) 转换成SINGLE 变量型态。   
CStr (表达式) 转换成字符串变量型态。   
Date ( )top 传回系统的日期。 例子: Date  
结果: 2000/5/13  
DateAdd ( I , N , D ) 将一个日期加上一段期间后的日期。 I :设定一个日期( Date )所加上的一段期间的单位。譬如 interval="d" 表示 N的单位为日。 I的设定值如下:  
yyyy Year 年  
q Quarter 季  
m Month 月  
d Day 日  
w Weekday 星期  
h Hour 时  
n Minute 分  
s Second 秒  
N :数值表达式,设定一个日期所加上的一段期间,可为正值或负值,正值表示加(结果为 >date 以后的日期),负值表示减(结果为 >date 以前的日期)。  
D :待加减的日期。 例子: DateAdd ( "m" , 1 , "31-Jan-98")  
结果: 28-Feb-98  
说明:将日期 31-Jan-98 加上一个月,结果为 28-Feb-98 而非 31-Fe-98 。  
例子: DateAdd ( "d" , 20 , "30-Jan-99")  
结果: 1999/2/9  
说明:将一个日期 30-Jan-99 加上 20 天后的日期。  
DateDiff (I , D1 , D2[,FW[,FY]]) 计算两个日期之间的期间。  
I :设定两个日期之间的期间计算之单位。譬如 >I="m" 表示计算的单位为月。 >I 的设定值如:  
yyyy > Year 年  
q Quarter 季  
m Month 月  
d Day 日  
w Weekday 星期  
h Hour 时  
m Minute 分  
s Second 秒  
D1 ,D2:计算期间的两个日期表达式,若 >date1 较早,则两个日期之间的期间结果为正值;若 >date2 较早, 则结果为负值。  
FW :设定每周第一天为星期几, 若未设定表示为星期天。 >FW 的设定值如下:  
0 使用 >API 的设定值。  
1 星期天  
2 星期一  
3 星期二  
4 星期三  
5 星期四  
6 星期五  
7 星期六  
FY :设定一年的第一周, 若未设定则表示一月一日那一周为一年的第一周。 >FY 的设定值如下:  
0 使用 >API 的设定值。  
1 一月一日那一周为一年的第一周  
2 至少包括四天的第一周为一年的第一周  
3 包括七天的第一周为一年的第一周 例子: DateDiff ("d","25-Mar-99 ","30-Jun-99 ")  
结果: 97  
说明:显示两个日期之间的期间为 97 天。  
DatePart (I,D,[,FW[,FY]]) 传回一个日期的之部份。  
>I :设定传回那一部份。譬如 >I="d" 表示传回 部份为日。 >I 的设定值如下:  
yyyy Year 年  
q Quarter 季  
m Month 月  
d Day 日  
w Weekday 星期  
h Hour 时  
m Minute 分  
s Second 秒  
D :待计算的日期。  
>FW :设定每周第一天为星期几, 若未设定则表示为星期天。 >FW 的设定值如下:  
0 使用 >API 的设定值。  
1 星期天  
2 星期一>3 星期二  
4 星期三  
5 星期四  
6 星期五  
7 星期六  
FY :设定一年的第一周, 若未设定则表示一月一日那一周为一年的第一周。 >FY 的设定值如下:  
0 使用 >API 的设定值。  
1 一月一日那一周为一年的第一周  
2 至少包括四天的第一周为一年的第一周  
3 包括七天的第一周为一年的第一周 例子: DatePart ("m","25-Mar-99 ")  
结果: 3  
说明:显示传回一个日期 的月部份。  
Dateserial (year,month,day) 转换(year,month,day) 成日期变量型态。 例子: DateSerial (99,10,1)  
结果: 1999/10/1  
Datevalue ( 日期的字符串或表达式 ) 转换成日期变量型态,日期从 January 1,100 到 December 31,9999 。格式为 month,day,and year 或 month/day/year 。譬如: December 30,1999 、 Dec 30,1999 、 12/30/1999 、 12/30/99 例子: Datevalue ("January 1,2002 ")  
结果: 2002/1/1  
Day( 日期的字符串或表达式 ) 传回日期的「日」部份。 例子: Day(" 12/1/1999 ")  
结果: 1  
Fix( 表达式 )top 转换字符串成整数数字型态。与 Int 函数相同。若为 null 时传回 null 。  
Int (number) 与 Fix(number) 的差别在负数。如 Int (-5.6)=-6 , Fix(-5.6)=-5 。 例子: Fix(5.6)  
结果: 5  
Hex( 表达式 )top 传回数值的十六进制值。若表达式为 null 时 Hex( 表达式 )=null ,若表达式 =Empty 时 Hex( 表达式 )=0 。 16 进位可以加「 &H 」表示,譬如 16 进位 &H10 表示十进制的 16 。 例子: Hex(30)  
结果: 1E  
Hour( 时间的字符串或表达式 ) 传回时间的「小时」部份。 例子: Hour("12:30:54 ")  
结果: 12  
InStr ([start,]string1,string2[,compare]) top 将一 个 字符串由左 而右与另一个比较,传回第一个相同的位置。  
start 为从第几个字比较起,若省略 start 则从第一个字比较起, string1 为待寻找的字符串表达式, string2 为 待比较的字符串表达式, compare 为比较的方法, compare=0 表二进制比较法, compare=1 表文字比较法,若省略 compare 则为预设的二进制比较法。 例子: InStr("abc123def123","12")  
结果: 4  
InstrRev ([start,]string1,string2[,compare]) 将一 个 字符串 由右而左与另一个比较,传回第一个相同的位置。  
start 为从第几个字比较起,若省略 start 则从第一个字比较起, string1 为待寻找的字符串表达式, string2 为 待比较的字符串表达式, compare 为比较的方法, compare=0 表二进制比较法, compare=1 表文字比较法,若省略 compare 则为预设的二进制比较法。 例子: InstrRev ("abc123def123","12")  
结果: 10  
Int ( 表达式 ) 传回一个数值的整数部份。与 Fix 函数相同。 例子: Int (5.6)  
结果: 5  
IsArray ( 变数 ) 测试变量是 (True) 否 (False) 是一个数组。 例子: IsArray (3)  
结果: False  
说明:不是一个数组。  
IsDate ( 日期或字符串的表达式 ) 是否可以转换成日期。日期从 January 1,100 A.D. 到 December 31,9999 A.D 。 例子: IsDate ("December 31,1999 ")  
结果: True  
说明:可以转换成日期。  
IsEmpty ( 变数 ) 测试变量是 (True) 否 (False) 已经被初始化 例子: IsEmpty (a)  
结果: True  
IsNull ( 变数 ) 测试变数是 (True) 否 (False) 不是有效的数据。 例子: IsNull ("")  
结果: False  
说明:是有效的数据。  
IsNumeric ( 表达式 ) 是 (True) 否 (False) 是数字。 例子: IsNumeric ("abc123")  
结果: False  
说明:不是数字。  
LCase ( 字符串表达式 ) top 转换字符串成小写。将大写字母的部份转换成小写。字符串其余的部份不变。 例子: LCase ("ABC123")  
结果: abc123  
Left( 字符串表达式 ,length) 取字符串左边的几个字。 length 为取个字。 Len 函数可得知字符串的长度。 例子: Left("ABC123",3)  
结果: ABC  
Len( 字符串表达式 变量 ) 取得字符串的长度。 例子: Len("ABC123")  
结果: 6  
LTrim ( 字符串表达式 ) 除去字符串左边的空白字。 RTrim 除去字符串右边的空白字, Trim 函数除去字符串左右两边的空白字。 例子: LTrim ("456+" abc ")  
结果: 456abc123  
Mid( 字符串表达式 ,start[,length]) top 取字符串中的几个字。 start 为从第几个 字取起, length 为取几个字, 若略 length 则从 start 取到最右底。由Len 函数可得知字符串的长度。 例子: Mid("abc123",2,3)  
结果: c12  
Minute( 日期的字符串或表达式 ) 传回时间的「分钟」部份。 例子: Minute("12:30:54")  
结果:30  
Month(日期的字符串或表达式) 传回日期的「月」部份。 例子:Month("12/1/2001")  
结果:12  
MonthName(month[,abbreviate]) 传回月的名称。  
month :待传回月名称的数字 1~12 。譬如, 1 代表一月, 7 代表七月。  
abbreviate: 是 (True) 否 (False) 为缩写,譬如 March ,缩写为 Mar 。默认值为 False 。中文的月名称无缩写。 例子: MonthName (7)  
结果:七月  
Now() 传回系统的日期时间。 例子: Now()  
结果: 2001/12/30 10:35:59 AM  
Oct() 传回数值的八进位值。八进位可以加「 &O 」表示,譬如八进位 &O10 表示十进制的 8 。 例子: Oct(10)  
结果: 12  
Replace( 字符串表达式,findnreplacewith[,start[,count[,compare]]])  将一个字符串取代 部份字。寻找待取代的原字符串 (find) , 若找到则被取代为新字符串 (replacewith) 。  
find :待寻找取代的原字符串。  
replacewith :取代后的字。  
start :从第几个字开始寻找取代, 若未设定则由第一个字开始寻找。  
count :取代的次数。 若未设定则所有寻找到的字符串取代字符 串全部被取代。  
compare :寻找比较的方法, compare=0 表示二进制比较法, compare=1 表文字比较法, compare =2 表根据比较的 数据型态而定,若省略 compare 则为预设的二进制比较法。 例子: Replace("ABCD123ABC","AB","ab")  
结果: abCD123abC  
Right( 字符串表达式 ,length) 取字符串右边的几个字, length 为取几个字。 Len 函数可得知字符串的长度。 例子: Right("ABC123",3)  
结果: 123  
Rnd [(number)] 0~1 的 随机随机数值。 number 是任何有效的数值表达式。若 number 小于 0 表示每次得到相同的 随机随机数值。 number 大于 0 或未提供时表示依序得到下一个 随机随机数值。 >number=0 表示得到最近产生的 随机随机数值。为了避免得到相同的随机随机数顺序,可以于 Rnd 函数前加 Randomize 。 例子: Rnd  
结果: 0.498498  
Round( 数值表达式 [,D]) 四舍五入。  
D :为四舍五入到第几位小数,若省略则四舍五入到整数。 例子: Round(30635,1)  
结果: 3.6  
RTrim ( 字符串表达式 ) 除去字符串右边的空白字。 LTrim 除去字符串左边的空白字, Trim 函数除去字符串左右两边的空白字。 例子: RTrim ("abc123 ")+"456"  
结果: abc123456  
Second( 时间的字符串或表达式 )top 传回时间的「秒」部份。 例子:Second("12:30:54")  
结果:54  
Space( 重复次数 ) 得到重复相同的空白字符串。 例子: A"+Space (5)+"B  
结果: A B  
说明: A 和 B 中间加入五个空白字。  
String( 重复次数,待重复的字 ) 得到重复相同的字符串。 例子: String(5,71)  
结果: GGGGG  
StrReverse (String(10,71)) 将一个字符串顺序颠倒。 例子: StrReverse ("ABC")  
结果: CBA  
Time() 传回系统的时间。 例子: Time  
结果: 10:35:59 PM  
TimeSerial (hour,minute,second) 转换指定的 ( hour,minute,second) 成时间 变量型态。 例子: TimeSerial (10,31,59)  
结果: 10:31:59  
Timevalue ( 日期的字符串或表达式 ) 转换 成时间变量型态。日期的字符串或表达式从 0:00:00(12:00:00 A.M.) 到 23:59:59(11:59:59 P.M.) 。 例子: Timevalue (" 11:59:59 ")  
结果: 11:59:59  
Trim( 字符串表达式 ) 除去字符串左右两边的空白字。 例子: Trim(" abc123 ")  
结果: abc123  
UCase ()top 转换字符串成大写。将小写字母的部份转换成大写,字符串其余部份不变。 例子: UCase ("abc123")  
结果: ABC123  
VarType ( 变数 ) 传回一个变量类型。与 TypeName 函数相同, VarType 传回变量类型的代码, TypeName 传回变量类型的名称。 例子: VarType ( "I love you!")  
结果: 8  
Weekday( 日期表达式 ,[FW])  传回星期几的数字。  
FW :设定一周的第一天是星期几。若 省略则表 1( 星期日 ) 。  
Firstdayfweek 设定值为: 1( 星期日 ),2( 星期一 ),3( 星期二 ),4( 星期三 ),5( 星期四 ),6( 星期五 ),7( 星期六 ) 。 例子: Weekday(" 1/1/2000")  
结果: 7  
WeekDayName (W,A,FW) 传回星期几的名称。  
W :是 (True) 否 (False) 为缩写。譬如 March ,缩写为 Mar 。预设为 False 。中文的星期几名称无缩写。  
FW :设定一周的第一天是星期几。 若省略表 1( 星期日 ) 。设定待传回星期几的名称,为一周中的第几天。  
A : 1( 星期日 ),2( 星期一 ),3( 星期二 ),4( 星期三&, nbsp;),5( 星期四 ),6( 星期五 ),7( 星期六 ) 。 例子: WeekDayName ("1/1/2000")  
结果:星期六  
Year() 传回日期的「年」部份。 例子: Year(" 12/1/2000 ")  
结果: 2000  

ASP中一种效率极高的分类算法(一)  
  
  
  
(2002年04月29日22:55:00 阅读: 1 ) 
  
  
在网站建设中,分类算法的应用非常的普遍。在设计一个电子商店时,要涉及到商品分类;在设计发布系统时,要涉及到栏目或者频道分类;在设计软件下载这样的程序时,要涉及到软件的分类;如此等等。可以说,分类是一个很普遍的问题。  


我常常面试一些程序员,而且我几乎毫无例外地要问他们一些关于分类算法的问题。下面的举几个我常常询问的问题。你认为你可以很轻松地回答么^_^.  

1、分类算法常常表现为树的表示和遍历问题。那么,请问:如果用数据库中的一个Table来表达树型分类,应该有几个字段? 
2、如何快速地从这个Table恢复出一棵树; 
3、如何判断某个分类是否是另一个分类的子类; 
4、如何查找某个分类的所有产品; 
5、如何生成分类所在的路径。 
6、如何新增分类;  

在不限制分类的级数和每级分类的个数时,这些问题并不是可以轻松回答的。本文试图解决这些问题。  

分类的数据结构 
我们知道:分类的数据结构实际上是一棵树。在《数据结构》课程中,大家可能学过Tree的算法。由于在网站建设中我们大量使用数据库,所以我们将从Tree在数据库中的存储谈起。  

为简化问题,我们假设每个节点只需要保留Name这一个信息。我们需要为每个节点编号。编号的方法有很多种。在数据库中常用的就是自动编号。这在Access、SQL Server、Oracle中都是这样。假设编号字段为ID。  

为了表示某个节点ID1是另外一个节点ID2的父节点,我们需要在数据库中再保留一个字段,说明这个分类是属于哪个节点的儿子。把这个字段取名为FatherID。如这里的ID2,其FatherID就是ID1。  

这样,我们就得到了分类Catalog的数据表定义:  

Create Table [Catalog](  

    [ID] [int] NOT NULL,  

    [Name] [nvarchar](50) NOT NULL,  

    [FatherID] [int] NOT NULL  

);  

约定:我们约定用-1作为最上面一层分类的父亲编码。编号为-1的分类。这是一个虚拟的分类。它在数据库中没有记录。  

如何恢复出一棵树 
上面的Catalog定义的最大优势,就在于用它可以轻松地恢复出一棵树—分类树。为了更清楚地展示算法,我们先考虑一个简单的问题:怎样显示某个分类的下一级分类。我们知道,要查询某个分类FID的下一级分类,SQL语句非常简单:  

select Name from catalog where FatherID=FID  

显示这些类别时,我们简单地用< LI>来做到:  

< %  

REM oConn---数据库连接,调用GetChildren时已经打开  

REM FID-----当前分类的编号  


Function GetChildren(oConn,FID)  

         strSQL = "select ID,Name from catalog where FatherID="&FID  

         set rsCatalog = oConn.Execute(strSQL)  

%>  

         < UL>  

< %  

         Do while not rsCatalog.Eof      

%>  

         < LI>< %=rsCatalog("Name")%>  

< %  

         Loop  

%>  

         < /UL>  

< %        

         rsCatalog.Close  

End Function  

%>  

现在我们来看看如何显示FID下的所有分类。这需要用到递归算法。我们只需要在GetChildren函数中简单地对所有ID进行调用:GetChildren(oConn,Catalog(“ID”))就可以了。  

< %  

REM oConn---数据库连接,已经打开  

REM FID-----当前分类的编号  


Function GetChildren(oConn,FID)  

         strSQL = "select Name from catalog where FatherID="&FID  

         set rsCatalog = oConn.Execute(strSQL)  

%>  

         < UL>  

< %  

         Do while not rsCatalog.Eof      

%>  

                   < LI>  

                < %=GetChildren(oConn,Catalog("ID"))%>  

        

< %  

         Loop  

%>  

         < /UL>  

< %        

         rsCatalog.Close  

End Function  

%>  

修改后的GetChildren就可以完成显示FID分类的所有子分类的任务。要显示所有的分类,只需要如此调用就可以了:  

< %  

REM strConn--连接数据库的字符串,请根据情况修改  

set oConn = Server.CreateObject("ADODB.Connection")  

oConn.Open strConn  

=GetChildren(oConn,-1)  

oConn.Close  

%>  


如何查找某个分类的所有产品; 
现在来解决我们在前面提出的第四个问题。第三个问题留作习题。我们假设产品的数据表如下定义:  

Create Table Product(  

      [ID] [int] NOT NULL,  

      [Name] [nvchar] NOT NULL,  

      [FatherID] [int] NOT NULL  

);  

其中,ID是产品的编号,Name是产品的名称,而FatherID是产品所属的分类。  

对第四个问题,很容易想到的办法是:先找到这个分类FID的所有子类,然后查询所有子类下的所有产品。实现这个算法实际上很复杂。代码大致如下:  

< %  

Function GetAllID(oConn,FID)  

     Dim strTemp  


     If FID=-1 then  

          strTemp = ""  

     else  

          strTemp =","  

     end if  

       

     strSQL = "select Name from catalog where FatherID="&FID  

     set rsCatalog = oConn.Execute(strSQL)  

     Do while not rsCatalog.Eof    

          strTemp=strTemp&rsCatalog("ID")&GetAllID(oConn,Catalog("ID")) REM 递归调用  

     Loop  

     rsCatalog.Close 
分类算法要解决的问题 
在网站建设中,分类算法的应用非常的普遍。在设计一个电子商店时,要涉及到商品分类;在设计发布系统时,要涉及到栏目或者频道分类;在设计软件下载这样的程序时,要涉及到软件的分类;如此等等。可以说,分类是一个很普遍的问题。  

我常常面试一些程序员,而且我几乎毫无例外地要问他们一些关于分类算法的问题。下面的举几个我常常询问的问题。你认为你可以很轻松地回答么^_^.  

1、分类算法常常表现为树的表示和遍历问题。那么,请问:如果用数据库中的一个Table来表达树型分类,应该有几个字段? 
2、如何快速地从这个Table恢复出一棵树; 
3、如何判断某个分类是否是另一个分类的子类; 
4、如何查找某个分类的所有产品; 
5、如何生成分类所在的路径。 
6、如何新增分类;  

在不限制分类的级数和每级分类的个数时,这些问题并不是可以轻松回答的。本文试图解决这些问题。  

分类的数据结构 
我们知道:分类的数据结构实际上是一棵树。在《数据结构》课程中,大家可能学过Tree的算法。由于在网站建设中我们大量使用数据库,所以我们将从Tree在数据库中的存储谈起。  

为简化问题,我们假设每个节点只需要保留Name这一个信息。我们需要为每个节点编号。编号的方法有很多种。在数据库中常用的就是自动编号。这在Access、SQL Server、Oracle中都是这样。假设编号字段为ID。  

为了表示某个节点ID1是另外一个节点ID2的父节点,我们需要在数据库中再保留一个字段,说明这个分类是属于哪个节点的儿子。把这个字段取名为FatherID。如这里的ID2,其FatherID就是ID1。  

这样,我们就得到了分类Catalog的数据表定义:  

Create Table [Catalog](  

    [ID] [int] NOT NULL,  

    [Name] [nvarchar](50) NOT NULL,  

    [FatherID] [int] NOT NULL  

);  

约定:我们约定用-1作为最上面一层分类的父亲编码。编号为-1的分类。这是一个虚拟的分类。它在数据库中没有记录。  

如何恢复出一棵树 
上面的Catalog定义的最大优势,就在于用它可以轻松地恢复出一棵树—分类树。为了更清楚地展示算法,我们先考虑一个简单的问题:怎样显示某个分类的下一级分类。我们知道,要查询某个分类FID的下一级分类,SQL语句非常简单:  

select Name from catalog where FatherID=FID  

显示这些类别时,我们简单地用〈 LI〉来做到:  

    

〈%  

REM oConn---数据库连接,调用GetChildren时已经打开  

REM FID-----当前分类的编号  


Function GetChildren(oConn,FID)  

         strSQL = "select ID,Name from catalog where FatherID="&FID  

         set rsCatalog = oConn.Execute(strSQL)  

%〉  

         〈UL〉  

〈%  

         Do while not rsCatalog.Eof      

%〉  

         〈LI〉〈%=rsCatalog("Name")%〉  

〈%  

         Loop  

%〉  

         〈/UL〉  

〈%        

         rsCatalog.Close  

End Function  

%〉  

现在我们来看看如何显示FID下的所有分类。这需要用到递归算法。我们只需要在GetChildren函数中简单地对所有ID进行调用:GetChildren(oConn,Catalog(“ID”))就可以了。  

〈%  

REM oConn---数据库连接,已经打开  

REM FID-----当前分类的编号  


Function GetChildren(oConn,FID)  

         strSQL = "select Name from catalog where FatherID="&FID  

         set rsCatalog = oConn.Execute(strSQL)  

%〉  

         〈UL〉  

〈%  

         Do while not rsCatalog.Eof      

%〉  

                   〈LI〉〈%=rsCatalog("Name")%〉  

                〈%=GetChildren(oConn,Catalog("ID"))%〉  

        

〈%  

         Loop  

%〉  

         〈/UL〉  

〈%        

         rsCatalog.Close  

End Function  

%〉  

修改后的GetChildren就可以完成显示FID分类的所有子分类的任务。要显示所有的分类,只需要如此调用就可以了:  

〈%  

REM strConn--连接数据库的字符串,请根据情况修改  

set oConn = Server.CreateObject("ADODB.Connection")  

oConn.Open strConn  

=GetChildren(oConn,-1)  

oConn.Close  

%〉  


如何查找某个分类的所有产品; 
现在来解决我们在前面提出的第四个问题。第三个问题留作习题。我们假设产品的数据表如下定义:  

Create Table Product(  

      [ID] [int] NOT NULL,  

      [Name] [nvchar] NOT NULL,  

      [FatherID] [int] NOT NULL  

);  

其中,ID是产品的编号,Name是产品的名称,而FatherID是产品所属的分类。  

对第四个问题,很容易想到的办法是:先找到这个分类FID的所有子类,然后查询所有子类下的所有产品。实现这个算法实际上很复杂。代码大致如下:  

〈%  

Function GetAllID(oConn,FID)  

     Dim strTemp  


     If FID=-1 then  

          strTemp = ""  

     else  

          strTemp =","  

     end if  

       

     strSQL = "select Name from catalog where FatherID="&FID  

     set rsCatalog = oConn.Execute(strSQL)  

     Do while not rsCatalog.Eof    

          strTemp=strTemp&rsCatalog("ID")&GetAllID(oConn,Catalog("ID")) REM 递归调用  

     Loop  

     rsCatalog.Close  

       

     GetAllID = strTemp  

End Function  


REM strConn--连接数据库的字符串,请根据情况修改  

set oConn = Server.CreateObject("ADODB.Connection")  

oConn.Open strConn  


FID = Request.QueryString("FID")  


strSQL = "select top 100 * from Product where FatherID in ("&GetAllID(oConn,FID)&")"  

set rsProduct=oConn.Execute(strSQL)  

%〉  

〈UL〉〈%  

Do while not rsProduct.EOF  

%〉  

     〈LI〉〈%=rsProduct("Name")%〉  

〈%      

Loop  

%〉  

〈/UL〉  

〈%rsProduct.Close  

oConn.Close   

%〉  

一个asp加密方法(好像是什么什么RSA,上次朋友相托写的)存为html就行了  



<% 
Class clsRSA 
Public Key  

Public Sub GetKey() 
Key=3 
end Sub  

Public Function Encode(ByVal Message) 
On Error Resume Next 
Dim L_Message 
Dim i 
Dim Asc_Message 
L_Message = Len(Message) 
If L_Message = 0 Then Exit Function 
call GetKey() 
For i = 1 To L_Message 
Asc_Message = Asc(Mid(Message,i, 1)) 
if Asc_Message\2=0 then  
   Asc_Message=Asc_Message+key 
else 
   Asc_Message=Asc_Message+key+1 
end if 
Encode=Encode & Chr(Asc_Message) 
next 
End Function  

Public Function Decode(ByVal Message) 
On Error Resume Next 
Dim L_Message 
Dim i 
Dim Asc_Message 
L_Message = Len(Message) 
If L_Message = 0 Then Exit Function 
call GetKey() 
For i = 1 To L_Message 
Asc_Message = Asc(Mid(Message,i, 1)) 
if (Asc_Message - Key)\2=0 then 
Asc_Message=Asc_Message - Key 
else 
Asc_Message=Asc_Message - Key-1 
end if 
Decode=Decode & Chr(Asc_Message) 
next 
End Function  

End Class 
key = "138505633zzszyzf" 
Set ObjRSA = New clsRSA 
pass=request("pass") 
if pass<>"" then enpass= ObjRSA.Decode(pass) 
%> 
<head> 
<title>1234</title> 
<meta http-equiv="Content-Type" content="text/html; charset=gb2312"> 
<style>BODY,TD,INPUT{}{FONT-SIZE:9PT}</style> 
</head> 
<body bgcolor="#FFFFFF" text="#000000"> 
<form name="enpass" method="post" > 
  密文:<input type="text" name="pass" value="<%=Pass%>"> 
  <input type="submit" name="Submit" value="解密"> 
</form> 
明文:<input type=text size=34 maxlength=16 value=’<%=enpass%>’> 
</body> 

Class clsRSA   


  Public PrivateKey  
  Public PublicKey  
  Public Modulus  
    
    
    
  Public Function Crypt(pLngMessage, pLngKey)  
    On Error Resume Next  
    Dim lLngMod  
    Dim lLngResult  
    Dim lLngIndex  
    If pLngKey Mod 2 = 0 Then  
      lLngResult = 1  
      For lLngIndex = 1 To pLngKey / 2  
        lLngMod = (pLngMessage ^ 2) Mod Modulus  
        ’’ Mod may error on key generation  
        lLngResult = (lLngMod * lLngResult) Mod Modulus  
        If Err Then Exit Function  
      Next  
    Else  
      lLngResult = pLngMessage  
      For lLngIndex = 1 To pLngKey / 2  
        lLngMod = (pLngMessage ^ 2) Mod Modulus  
        On Error Resume Next  
        ’’ Mod may error on key generation  
        lLngResult = (lLngMod * lLngResult) Mod Modulus  
        If Err Then Exit Function  
      Next  
    End If  
    Crypt = lLngResult  
  End Function   


  Public Function Encode(ByVal pStrMessage)  
    Dim lLngIndex  
    Dim lLngMaxIndex  
    Dim lBytAscii  
    Dim lLngEncrypted  
    lLngMaxIndex = Len(pStrMessage)  
    If lLngMaxIndex = 0 Then Exit Function  
    For lLngIndex = 1 To lLngMaxIndex  
      lBytAscii = Asc(Mid(pStrMessage, lLngIndex, 1))  
      lLngEncrypted = Crypt(lBytAscii, PublicKey)  
      Encode = Encode & NumberToHex(lLngEncrypted, 4)  
    Next  
  End Function  
    
  Public Function Decode(ByVal pStrMessage)  
    Dim lBytAscii  
    Dim lLngIndex  
    Dim lLngMaxIndex  
    Dim lLngEncryptedData  
    Decode = ""  
    lLngMaxIndex = Len(pStrMessage)  
    For lLngIndex = 1 To lLngMaxIndex Step 4  
      lLngEncryptedData = HexToNumber(Mid(pStrMessage, lLngIndex, 4))  
      lBytAscii = Crypt(lLngEncryptedData, PrivateKey)  
      Decode = Decode & Chr(lBytAscii)  
    Next  
  End Function  
    
  Private Function NumberToHex(ByRef pLngNumber, ByRef pLngLength)  
    NumberToHex = Right(String(pLngLength, "0") & Hex(pLngNumber), pLngLength)  
  End Function   

  Private Function HexToNumber(ByRef pStrHex)  
    HexToNumber = CLng("&h" & pStrHex)  
  End Function   

End Class  
%>   


test.asp  
<!--#INCLUDE FILE="RSA.asp"-->  
<%  
function Encryptstr(Message)  
Dim LngKeyE  
Dim LngKeyD  
Dim LngKeyN  
Dim StrMessage  
Dim ObjRSA   


  LngKeyE = "32823"  
  LngKeyD = "20643"  
  LngKeyN = "29893"  
  StrMessage = Message  
    
  Set ObjRSA = New clsRSA  
    
   
      ObjRSA.PublicKey = LngKeyE  
      ObjRSA.Modulus = LngKeyN  
      Encryptstr = ObjRSA.Encode(StrMessage)  
  Set ObjRSA = Nothing  
end function   



function decryptstr(Message)  
Dim LngKeyE  
Dim LngKeyD  
Dim LngKeyN  
Dim StrMessage  
Dim ObjRSA   


  LngKeyE = "32823"  
  LngKeyD = "20643"  
  LngKeyN = "29893"  
  StrMessage = Message  
    
  Set ObjRSA = New clsRSA   

      ObjRSA.PrivateKey =LngKeyD  
      ObjRSA.Modulus=LngKeyN  
      decryptstr=ObjRSA.Decode(StrMessage)  
  Set ObjRSA = Nothing  
end function   


dim last,first  
first="sohu"  
Response.Write "加密前为:"&first  
last=Encryptstr(first)  
Response.Write "加密后为"&last  
Response.Write "解密后为" &decryptstr(last)   

%> 
一段在asp中加密与解密对应的函数 

如何用asp进行base64加密  
  
<% 
     OPTION EXPLICIT 
     const BASE_64_MAP_INIT = 
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/" 
     dim nl 
     ’ zero based arrays 
     dim Base64EncMap(63) 
     dim Base64DecMap(127)  


     ’ must be called before using anything else 
     PUBLIC SUB initCodecs() 
          ’ init vars 
          nl = "<P>" & chr(13) & chr(10) 
          ’ setup base 64 
          dim max, idx 
             max = len(BASE_64_MAP_INIT) 
          for idx = 0 to max - 1 
               ’ one based string 
               Base64EncMap(idx) = mid(BASE_64_MAP_INIT, idx + 1, 1) 
          next 
          for idx = 0 to max - 1 
               Base64DecMap(ASC(Base64EncMap(idx))) = idx 
          next 
     END SUB  

     ’ encode base 64 encoded string 
     PUBLIC FUNCTION base64Encode(plain)  

          if len(plain) = 0 then 
               base64Encode = "" 
               exit function 
          end if  

          dim ret, ndx, by3, first, second, third 
          by3 = (len(plain) \ 3) * 3 
          ndx = 1 
          do while ndx <= by3 
               first  = asc(mid(plain, ndx+0, 1)) 
               second = asc(mid(plain, ndx+1, 1)) 
               third  = asc(mid(plain, ndx+2, 1)) 
               ret = ret & Base64EncMap(  (first \ 4) AND 63 ) 
               ret = ret & Base64EncMap( ((first * 16) AND 48) + ((second \ 16) 
AND 15 ) ) 
               ret = ret & Base64EncMap( ((second * 4) AND 60) + ((third \ 64) 
AND 3 ) ) 
               ret = ret & Base64EncMap( third AND 63) 
               ndx = ndx + 3 
          loop 
          ’ check for stragglers 
          if by3 < len(plain) then 
               first  = asc(mid(plain, ndx+0, 1)) 
               ret = ret & Base64EncMap(  (first \ 4) AND 63 ) 
               if (len(plain) MOD 3 ) = 2 then 
                    second = asc(mid(plain, ndx+1, 1)) 
                    ret = ret & Base64EncMap( ((first * 16) AND 48) + 
((second 16) AND 15 ) ) 
                    ret = ret & Base64EncMap( ((second * 4) AND 60) ) 
               else 
                    ret = ret & Base64EncMap( (first * 16) AND 48) 
                    ret = ret & "=" 
               end if 
               ret = ret & "=" 
          end if  

          base64Encode = ret 
     END FUNCTION  

     ’ decode base 64 encoded string 
     PUBLIC FUNCTION base64Decode(scrambled)  

          if len(scrambled) = 0 then 
               base64Decode = "" 
               exit function 
          end if  

          ’ ignore padding 
          dim realLen 
          realLen = len(scrambled) 
          do while mid(scrambled, realLen, 1) = "=" 
               realLen = realLen - 1 
          loop 
          dim ret, ndx, by4, first, second, third, fourth 
          ret = "" 
          by4 = (realLen \ 4) * 4 
          ndx = 1 
          do while ndx <= by4 
               first  = Base64DecMap(asc(mid(scrambled, ndx+0, 1))) 
               second = Base64DecMap(asc(mid(scrambled, ndx+1, 1))) 
               third  = Base64DecMap(asc(mid(scrambled, ndx+2, 1))) 
               fourth = Base64DecMap(asc(mid(scrambled, ndx+3, 1))) 
               ret = ret & chr( ((first * 4) AND 255) +   ((second \ 16) AND 3) 

               ret = ret & chr( ((second * 16) AND 255) + ((third \ 4) AND 
15) ) 
               ret = ret & chr( ((third * 64) AND 255) +  (fourth AND 63) ) 
               ndx = ndx + 4 
          loop 
      &nb, sp;   ’ check for stragglers, will be 2 or 3 characters 
          if ndx < realLen then 
               first  = Base64DecMap(asc(mid(scrambled, ndx+0, 1))) 
               second = Base64DecMap(asc(mid(scrambled, ndx+1, 1))) 
               ret = ret & chr( ((first * 4) AND 255) +   ((second \ 16) AND 3) 

               if realLen MOD 4 = 3 then 
                    third = Base64DecMap(asc(mid(scrambled,ndx+2,1))) 
                    ret = ret & chr( ((second * 16) AND 255) + ((third \ 4) AND 
15) ) 
               end if 
          end if  

          base64Decode = ret 
     END FUNCTION  

’ initialize 
     call initCodecs  

’ Testing code 
’    dim inp, encode 
’    inp = request.QueryString("input") 
’    encode = base64Encode(inp) 
’    response.write "Encoded value = " & encode & nl 
’    response.write "Decoded value = " & base64Decode(encode) & nl 
%>  


用asp写个简单的加密和解密的类 
http://www.pconline.com.cn/pcedu/empolder/wz/asp/0412/509728.html  


  用asp写个简单的加密和解密的类,在这个类中简单的实现了一个加密和解密。目的是和大家分享一下。这个类的破解非常简单。看看我的注释就知道是怎么回事了。下次编写一个java的加密和解密的类。  

class Base64Class 
  rem Const  
  dim sBASE_64_CHARACTERS’转化码  
  dim lenString ’计算字符串的长度  
  dim iCount ’计数器  
  dim returnvalue ’返回值  
  dim tempChar’缓存字符  
  dim tempString’缓存字符串  
  dim paramString ’参数字符串  
  dim temHex’缓存缓存十六进制  
  dim tempLow’缓存低位  
  dim tempHigh’缓存高位  
  dim mod3String’  
  dim mod4String’  
  dim tempBinary’  
  dim tempByteOne’  
  dim tempByteTwo’  
  dim tempByteThree’  
  dim tempByteFour’  
  dim tempSaveBitsOne’  
  dim tempSaveBitsTwo’  
  ’******************************************** 
  ’begin初始化类  
  ’********************************************  
  private sub Class_Initialize()  
  sBASE_64_CHARACTERS = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/" end sub  
  ’********************************************  
  ’end初始化类 ’ 
  ********************************************  
  ’********************************************  
  ’begin销毁类  
  ’********************************************  
  Private Sub Class_Terminate()  
  sBASE_64_CHARACTERS="" end sub  
  ’********************************************  
  ’end销毁类  
  ’********************************************  

  ’********************************************  
  ’begin将Ansi编码的字符串进行Base64编码  
  ’********************************************  
  public function Encode(paramString)  
  tempString=""  
  returnvalue=""  
  lenString=len(paramString)  
  if lenString<1 then  
  Encode=returnvalue  
  else  
  mod3String=lenString mod 3  
  ’补足位数是为了便于计算  
  if mod3String>0 then  
  lenString=lenString+3-mod3String  
  lenString=lenString-3  
  end if  
’*************************begin  
  for iCount=1 to lenString step 3  
  tempBinary = Mid(paramString, iCount, 3)  
  ’response.write tempBinary  
  tempByteOne= Asc(Mid(tempBinary, 1, 1)): tempSaveBitsOne = tempByteOne And 3  
  tempByteTwo = Asc(Mid(tempBinary, 2, 1)): tempSaveBitsTwo = tempByteTwo And 15  
  tempChar = Asc(Mid(tempBinary, 3, 1))  
  tempByteOne = Mid(sBASE_64_CHARACTERS, ((tempByteOne And 252) \ 4) + 1, 1)  
  tempByteTwo = Mid(sBASE_64_CHARACTERS, (((tempByteTwo And 240) \ 16) Or (tempSaveBitsOne * 16) And &HFF) + 1, 1)  
  tempByteThree = Mid(sBASE_64_CHARACTERS, (((tempChar And 192) \ 64) Or (tempSaveBitsTwo * 4) And &HFF) + 1, 1)  
  tempByteFour = Mid(sBASE_64_CHARACTERS, (tempChar And 63) + 1, 1)  
  tempString = tempByteOne & tempByteTwo & tempByteThree & tempByteFour returnvalue=returnvalue & tempString next  
  ’*************************end  
  ’*************************begin处理最后剩余的几个字符  
  if mod3String>0 then  
  tempBinary = Mid(paramString, iCount, mod3String)  
  if mod3String=1 then  
  tempString = tempBinary & Chr(64) & Chr(64) & Chr(64) ’用@号补足位数  
  else tempString = tempBinary & Chr(64) & Chr(64) ’用@号补足位数  
  end if  
  returnvalue=returnvalue & tempString  
  end if  
  ’*************************end处理最后剩余的几个字符  
  Encode=returnvalue end if end function  
  ’********************************************  
  ’end将Ansi编码的字符串进行Base64编码  
  ’******************************************** 
  ’********************************************  
  ’end将Base64编码字符串转换成Ansi编码的字符串  
  ’********************************************  
  public function Decode(paramString)  
  tempString=""  
  returnvalue=""  
  lenString=len(paramString)  
  if lenString<1 then  
  Decode=returnvalue  
  else  
  mod4String=lenString mod 4  
  if mod4String >0 then ’字符串长度应当是4的倍数  
  Decode=returnvalue  
  else ’begin判断是不是@号  
  if Mid(paramString, lenString-1, 1) = "@" then  
  mod4String=2  
  end if  
  if Mid(paramString, lenString-2, 1) = "@" then  
  mod4String=1  
  end if  
  ’end判断是不是@号  
  if mod4String>0 then  
  lenString=lenString-4  
  end if   

’******************************begin  
  for iCount=1 to lenString step 4  
  tempString = Mid(paramString, iCount, 4)  
  tempByteOne = InStr(sBASE_64_CHARACTERS, Mid(tempString, 1, 1)) - 1  
  tempByteTwo = InStr(sBASE_64_CHARACTERS, Mid(tempString, 2, 1)) - 1  
  tempByteThree = InStr(sBASE_64_CHARACTERS, Mid(tempString, 3, 1)) - 1  
  tempByteFour = InStr(sBASE_64_CHARACTERS, Mid(tempString, 4, 1)) - 1  
  tempByteOne = Chr(((tempByteTwo And 48) \ 16) Or (tempByteOne * 4) And &HFF) tempByteTwo = "" & Chr(((tempByteThree And 60) \ 4) Or (tempByteTwo * 16) And &HFF)  
  tempByteThree = Chr((((tempByteThree And 3) * 64) And &HFF) Or (tempByteFour And 63))  
  tempString=tempByteOne & tempByteTwo & tempByteThree  
  returnvalue=returnvalue & tempString  
  next  
  ’******************************end  
  ’处理最后剩余的几个字符  
  if mod4String > 0 then  
  tempString=left(right(paramString,4),mod4String)  
  returnvalue = returnvalue & tempString  
  end if  
  Decode=returnvalue  
  end if  
  end if  
  end function  
  ’********************************************  
  ’end将Base64编码字符串转换成Ansi编码的字符串  
  ’********************************************  

  end class 

ASP中时间函数的使用(一)  
副标题:  
作者:佚名 文章来源:本站原创 点击数:313 更新时间:2004-9-16  
  
  
  Date 函数 
描述:返回当前系统日期。 
语法:Date  


DateAdd 函数 
描述:返回已添加指定时间间隔的日期。  
语法:DateAdd(interval, number, date) 
interval: 必选。字符串表达式,表示要添加的时间间隔。有关数值,请参阅“设置”部分。  
number: 必选。数值表达式,表示要添加的时间间隔的个数。数值表达式可以是正数(得到未来的日期)或负数(得到过去的日期)。  
date: 必选。Variant 或要添加 interval 的表示日期的文字。   
interval 参数可以有以下值: 
yyyy (年) 、q (季度) 、m (月) 、y (一年的日数) 、d (日) 、w (一周的日数) 、ww (周) 、h (小时) 、n (分钟) 、s (秒) 
说明:可用 DateAdd 函数从日期中添加或减去指定时间间隔。例如可以使用 DateAdd 从当天算起 30 天以后的日期或从现在算起 45 分钟以后的时间。要向 date 添加以“日”为单位的时间间隔,可以使用“一年的日数”(“y”)、“日”(“d”)或“一周的日数”(“w”)。 
DateAdd 函数不会返回无效日期。如下示例将 95 年 1 月 31 日加上一个月: 
NewDate = DateAdd("m", 1, "31-Jan-95") 
在这个例子中,DateAdd 返回 95 年 2 月 28 日,而不是 95 年 2 月 31 日。如果 date 为 96 年 1 月 31 日,则返回 96 年 2 月 29 日,这是因为 1996 是闰年。 
如果计算的日期是在公元 100 年之前则会产生错误。 
如果 number 不是 Long 型值,则在计算前四舍五入为最接近的整数。   

DateDiff 函数 
描述:返回两个日期之间的时间间隔。  
语法:DateDiff(interval, date1, date2 [,firstdayofweek[, firstweekofyear>) 
interval: 必选。字符串表达式,表示用于计算 date1 和 date2 之间的时间间隔。有关数值,请参阅“设置”部分。  
date1, date2: 必选。日期表达式。用于计算的两个日期。  
firstdayofweek: 可选。指定星期中第一天的常数。如果没有指定,则默认为星期日。有关数值,请参阅“设置”部分。  
firstweekofyear: 可选。指定一年中第一周的常数。如果没有指定,则默认为 1 月 1 日所在的星期。有关数值,请参阅“设置”部分。  
interval 参数可以有以下值: 
yyyy (年) 、q (季度) 、m (月) 、y (一年的日数) 、d (日) 、w (一周的日数) 、ww (周) 、h (小时) 、n (分钟) 、s (秒) 
firstdayofweek 参数可以有以下值: 
(以下分别为:常数 值 描述) 
vbUseSystem 0 使用区域语言支持 (NLS) API 设置。  
vbSunday 1 星期日(默认)  
vbMonday 2 星期一  
vbTuesday 3 星期二  
vbWednesday 4 星期三  
vbThursday 5 星期四  
vbFriday 6 星期五  
vbSaturday 7 星期六  
firstweekofyear 参数可以有以下值: 
(以下分别为:常数 值 描述) 
vbUseSystem 0 使用区域语言支持 (NLS) API 设置。  
vbFirstJan1 1 由 1 月 1 日所在的星期开始(默认)。  
vbFirstFourDays 2 由在新年中至少有四天的第一周开始。  
vbFirstFullWeek 3 由在新的一年中第一个完整的周开始。  
说明:DateDiff 函数用于判断在两个日期之间存在的指定时间间隔的数目。例如可以使用 DateDiff 计算两个日期相差的天数,或者当天到当年最后一天之间的星期数。 
要计算 date1 和 date2 相差的天数,可以使用“一年的日数”(“y”)或“日”(“d”)。当 interval 为“一周的日数”(“w”)时,DateDiff 返回两个日期之间的星期数。如果 date1 是星期一,则 DateDiff 计算到 date2 之前星期一的数目。此结果包含 date2 而不包含 date1。如果 interval 是“周”(“ww”),则 DateDiff 函数返回日历表中两个日期之间的星期数。函数计算 date1 和 date2 之间星期日的数目。如果 date2 是星期日,DateDiff 将计算 date2,但即使 date1 是星期日,也不会计算 date1。 
如果 date1 晚于 date2,则 DateDiff 函数返回负数。 
firstdayofweek 参数会对使用“w”和“ww”间隔符号的计算产生影响。 
如果 date1 或 date2 是日期文字,则指定的年度会成为日期的固定部分。但是如果 date1 或 date2 被包括在引号 (" ") 中并且省略年份,则在代码中每次计算 date1 或 date2 表达式时,将插入当前年份。这样就可以编写适用于不同年份的程序代码。 
在 interval 为“年”(“yyyy”)时,比较 12 月 31 日和来年的 1 月 1 日,虽然实际上只相差一天,DateDiff 返回 1 表示相差一个年份。   

DatePart 函数 
描述:返回给定日期的指定部分。 
语法:DatePart(interval, date[, firstdayofweek[, firstweekofyear>) 
DatePart: 函数的语法有以下参数: 
interval: 必选。字符串表达式,表示要返回的时间间隔。有关数值,请参阅“设置”部分。  
date: 必选。要计算的日期表达式。  
firstdayof week: 可选。指定星期中的第一天的常数。如果没有指定,则默认为星期日。有关数值,请参阅“设置”部分。  
firstweekofyear: 可选。指定一年中第一周的常数。如果没有指定,则默认为 1 月 1 日所在的星期。有关数值,请参阅“设置”部分。  
interval 参数可以有以下值: 
yyyy (年) 、q (季度) 、m (月) 、y (一年的日数) 、d (日) 、w (一周的日数) 、ww (周) 、h (小时) 、n (分钟) 、s (秒) 
firstdayofweek 参数可以有以下值: 
(以下分别为:常数 值 描述) 
vbUseSystem 0 使用区域语言支持 (NLS) API 设置。  
vbSunday 1 星期日(默认)  
vbMonday 2 星期一  
vbTuesday 3 星期二  
vbWednesday 4 星期三  
vbThursday 5 星期四  
vbFriday 6 星期五  
vbSaturday 7 星期六  
firstweekofyear 参数可以有以下值: 
(以下分别为:常数 值 描述) 
vbUseSystem 0 使用区域语言支持 (NLS) API 设置。  
vbFirstJan1 1 由 1 月 1 日所在的星期开始(默认)。  
vbFirstFourDays 2 由在新年中至少有四天的第一周开始。  
vbFirstFullWeek 3 由在新的一年中第一个完整的周(不跨年度)开始。  
说明:DatePart 函数用于计算日期并返回指定的时间间隔。例如使用 DatePart 计算某一天是星期几或当前的时间。 
firstdayofweek 参数会影响使用“w”和“ww”间隔符号的计算。 
如果 date 是日期文字,则指定的年度会成为日期的固定部分。但是如果 date 被包含在引号 (" ") 中,并且省略年份,则在代码中每次计算 date 表达式时,将插入当前年份。这样就可以编写适用于不同年份的程序代码。   

ASP中时间函数的使用(二)  
副标题:  
作者:佚名 文章来源:本站原创 点击数:232 更新时间:2004-9-16  
  
  
 DateSerial 函数 
描述:对于指定的年、月、日,返回 Date 子类型的 Variant。 
语法:DateSerial(year, month, day) 
year: 从 100 到 9999 之间的数字或数值表达式。  
month: 任意数值表达式。  
day: 任意数值表达式。  
说明:要指定日期,如 1991 年 12 月 31 日,DateSerial 函数中每个参数的取值范围都应该是可接受的;即日的取值应在 1 和 31 之间,月的取值应在 1 和 12 之间。但是,也可以使用表示某日之前或之后的年、月、日数目的数值表达式为每个参数指定相对日期。 
以下样例中使用了数值表达式代替绝对日期。在这里,DateSerial 函数返回 1990 年 8 月 1 日之前十年 (1990 - 10) 零两个月 (8 - 2) 又一天 (1 - 1) 的日期:即 1980 年 5 月 31 日。 
DateSerial(1990 - 10, 8 - 2, 1 - 1) 
对于 year 参数,若取值范围是从 0 到 99,则被解释为 1900 到 1999 年。对于此范围之外的 year 参数,则使用四位数字表示年份(例如 1800 年)。 
当任何一个参数的取值超出可接受的范围时,则会适当地进位到下一个较大的时间单位。例如,如果指定了 35 天,则这个天数被解释成一个月加上多出来的日数,多出来的日数取决于其年份和月份。但是如果参数值超出 -32,768 到 32,767 的范围,或者由三个参数指定(无论是直接还是通过表达式指定)的日期超出了可以接受的日期范围,就会发生错误。  


Datevalue 函数 
描述:返回 Date 子类型的 Variant。 
语法:Datevalue(date) 
date 参数应是字符串表达式,表示从 100 年 1 月 1 日到 9999 年 12 月 31 日中的一个日期。但是,date 也可以是表示上述范围内的日期、时间或日期时间混合的任意表达式。 
说明:如果 date 参数包含时间信息,则 Datevalue 不会返回时间信息。但是如果 date 包含无效的时间信息(如 "89:98"),就会出现错误。 
如果 date 是某一字符串,其中仅包含由有效的日期分隔符分隔开的数字,则 Datevalue 将会根据为系统指定的短日期格式识别月、日和年的顺序。Datevalue 还会识别包含月份名称(无论是全名还是缩写)的明确日期。例如,除了能够识别 12/30/1991 和 12/30/91 之外,Datevalue 还能识别 December 30, 1991 和 Dec 30, 1991。 
如果省略了 date 的年份部分,Datevalue 将使用计算机系统日期中的当前年份。  

Day 函数 
描述:返回 1 到 31 之间的一个整数(包括 1 和31),代表某月中的一天。 
语法:Day(date) 
date 参数是任意可以代表日期的表达式。如果 date 参数中包含 Null,则返回 Null。  

FormatDateTime 函数 
描述:返回表达式,此表达式已被格式化为日期或时间。  
语法:FormatDateTime(Date[,NamedFormat]) 
Date: 必选。要被格式化的日期表达式。  
NamedFormat: 可选。指示所使用的日期/时间格式的数值,如果省略,则使用 vbGeneralDate。  
NamedFormat 参数可以有以下值: 
(以下分别为:常数 值 描述) 
vbGeneralDate 0 显示日期和/或时间。如果有日期部分,则将该部分显示为短日期格式。如果有时间部分,则将该部分显示为长时间格式。如果都存在,则显示所有部分。   
vbLongDate 1 使用计算机区域设置中指定的长日期格式显示日期。  
vbShortDate 2 使用计算机区域设置中指定的短日期格式显示日期。  
vbLongTime 3 使用计算机区域设置中指定的时间格式显示时间。  
vbShortTime 4 使用 24 小时格式 (hh:mm) 显示时间。   

Hour 函数 
描述:返回 0 到 23 之间的一个整数(包括 0 和 23),代表一天中的某一小时。 
语法:Hour(time) 
time 参数是任意可以代表时间的表达式。如果 time 参数中包含 Null,则返回 Null。  

Minute 函数 
描述:返回 0 到 59 之间的一个整数(包括 0 和59),代表一小时内的某一分钟。 
语法:Minute(time) 
time 参数是任意可以代表时间的表达式。如果 time 参数包含 Null,则返回 Null。  

Month 函数 
描述:返回 1 到 12 之间的一个整数(包括 1 和 12),代表一年中的某月。 
语法:Month(date) 
date 参数是任意可以代表日期的表达式。如果 date 参数中包含 Null,则返回 Null。 
  
ASP中时间函数的使用(三)  
副标题:  
作者:佚名 文章来源:本站原创 点击数:150 更新时间:2004-9-16  
  
  
  MonthName 函数 
描述:返回表明指定月份的字符串。 
语法:MonthName(month[, abbreviate]) 
month: 必选。月份的数值定义。例如,一月是 1,二月是 2,以此类推。  
abbreviate: 可选。Boolean 值,表明月份名称是否简写。如果省略,默认值为 False,即不简写月份名称。   


Now 函数 
描述:根据计算机系统设定的日期和时间返回当前的日期和时间值。 
语法:Now  

Second 函数 
描述:返回 0 到 59 之间的一个整数(包括 1 和 59),代表一分钟内的某一秒。 
语法:Second(time) 
time 参数是任意可以代表时间的表达式。如果 time 参数中包含 Null,则返回 Null。  

Time 函数 
描述:返回 Date 子类型 Variant,指示当前系统时间。 
语法:Time  

TimeSerial 函数 
描述:返回一个 Date 子类型的 Variant,含有指定时、分、秒的时间。 
语法:TimeSerial(hour, minute, second) 
hour: 其值为从 0 (12:00 A.M.) 到 23 (11:00 P.M.) 的数值或数值表达式。  
minute: 任意数值表达式。  
second: 任意数值表达式。  
说明:要指定一时刻,如 11:59:59,TimeSerial 的参数取值应在可接受的范围内;也就是说,小时应介于 0-23 之间,分和秒应介于 0-59 之间。但是,可以使用数值表达式为每个参数指定相对时间,这一表达式代表某时刻之前或之后的时、分或秒数。以下样例中使用了表达式代替绝对时间数。TimeSerial 函数返回中午之前六小时 (12 - 6) 十五分钟的时间 (-15),即 5:45:00 A.M.。  
TimeSerial(12 - 6, -15, 0) 
当任何一个参数的取值超出可接受的范围时,它会正确地进位到下一个较大的时间单位中。例如,如果指定了 75 分钟,则这个时间被解释成一小时十五分钟。但是,如果任何一个参数值超出 -32768 到 32767 的范围,就会导致错误。如果使用三个参数直接指定的时间或通过表达式计算出的时间超出可接受的日期范围,也会导致错误。  

Timevalue 函数 
描述:返回包含时间的 Date 子类型的 Variant。 
语法:Timevalue(time) 
time 参数通常是代表从 0:00:00 (12:00:00 A.M.) 到 23:59:59 (11:59:59 P.M.) 的字符串表达式(包括 0:00:00 和 23:59:59)。不过,time 也可以是代表该范围内任何时间的表达式。如果 time 参数包含 Null,则返回 Null。 
说明:可以采用 12 或 24 小时时钟格式输入时间。例如 "2:24PM" 和 "14:24" 都是有效的 time 参数。 
如果 time 参数包含日期信息, Timevalue 函数并不返回日期信息。然而,如果 time 参数包含无效的日期信息,则会出现错误。  

Weekday 函数 
描述:返回代表一星期中某天的整数。 
语法:Weekday(date, [firstdayofweek]) 
date: 可以代表日期的任意表达式。如果 date 参数中包含 Null,则返回 Null。  
firstdayofweek: 指定星期中第一天的常数。如果省略,默认使用 vbSunday。  
firstdayofweek 参数有如下设置: 
(以下分别为:常数 值 描述) 
vbUseSystem 0 使用区域语言支持 (NLS) API 设置。  
vbSunday 1 星期日  
vbMonday 2 星期一  
vbTuesday 3 星期二  
vbWednesday 4 星期三  
vbThursday 5 星期四  
vbFriday 6 星期五  
vbSaturday 7 星期六  
Weekday 函数返回如下值: 
(以下分别为:常数 值 描述) 
vbSunday 1 星期日  
vbMonday 2 星期一  
vbTuesday 3 星期二  
vbWednesday 4 星期三  
vbThursday 5 星期四  
vbFriday 6 星期五  
vbSaturday 7 星期六   

WeekdayName 函数 
描述:返回一个字符串,表示星期中指定的某一天。 
语法:WeekDayName(weekday, abbreviate, firstdayofweek) 
weekday: 必选。星期中某天的数值定义。各天的数值定义取决于 firstdayofweek 参数设置。  
abbreviate: 可选。Boolean 值,指明是否缩写表示星期各天的名称。如果省略, 默认值为 False,即不缩写星期各天的名称。  
firstdayofweek: 可选。指明星期第一天的数值。关于数值,请参阅“设置”部分。  
firstdayofweek 参数有以下值: 
(以下分别为:常数 值 描述) 
vbUseSystem 0 使用区域语言支持 (NLS) API 设置。  
vbSunday 1 星期日(默认)  
vbMonday 2 星期一  
vbTuesday 3 星期二  
vbWednesday 4 星期三  
vbThursday 5 星期四  
vbFriday 6 星期五  
vbSaturday 7 星期六   

Year 函数 
描述:返回一个代表某年的整数。 
语法:Year(date) 
date 参数是任意可以代表日期的参数。如果 date 参数中包含 Null,则返回 Null。   
让我们了解IE的按钮  
副标题:  
作者:admin 文章来源:本站原创 点击数:89 更新时间:2004-9-11  
  
&nbs, p; 
ie按钮  
<OBJECT classid=CLSID:8856F961-340A-11D0-A96B-00C04FD705A2 height=0 id=WebBrowser width=0> 
  </OBJECT>  
  <input onclick=document.all.WebBrowser.ExecWB(1,1) type=button value=打开 name=Button1> 
  <input onclick=document.all.WebBrowser.ExecWB(4,1) type=button value=另存为 name=Button2> 
  <input onclick=document.all.WebBrowser.ExecWB(10,1) type=button value=属性 name=Button3> 
  <input onclick=document.all.WebBrowser.ExecWB(6,1) type=button value=打印 name=Button> 
  <input onclick=document.all.WebBrowser.ExecWB(8,1) type=button value=页面设置 name=Button4> 
  <br> 
  <input onclick=window.location.reload() type=button value=刷新 name=refresh> 
  <input onclick="window.external.ImportExportFavorites(true,’’);" type=button value=导入收藏夹 name=Button5> 
  <input onclick="window.external.ImportExportFavorites(false,’’);" type=button value=导出收藏夹 name=Button32> 
  <input onclick="window.external.AddFavorite(location.href, document.title)" type=button value=加入收藏夹 name=Button22> 
  <br> 
  <input onclick="window.external.ShowBrowserUI(’OrganizeFavorites’, null)" type=button value=整理收藏夹 name=Submit2> 
  <input onclick=’window.location="view-source:" + window.location.href’ type=button value=查看源文件 name=Button7> 
  <input onclick="window.external.ShowBrowserUI(’LanguageDialog’, null)" type=button value=语言设置 name=Button6> 
  <input onclick=history.go(1) type=submit value=前进 name=Submit> 
  <input onclick=history.go(-1) type=submit value=后退 name=Submit2> 
要完成此效果把如下代码加入到<body>区域中 
<input type="button" name="Button" value="点击保存页面" onClick="document.all.WebBrowser.ExecWB(4,1)"> 
<object id="WebBrowser" width=0 height=0 classid="CLSID:8856F961-340A-11D0-A96B-00C04FD705A2"> 
</object>  
……………………………………………………………………………………………………………………………… 
鼠标自定义 
<script language=javascript>var Loaded=false;var Flag=false;</script> 
<script src=’ http://files.cometsystems.com/&#106avascript/lc2000.js’ 
language=javascript></script> 
<script language=javascript>if(Loaded&&Flag)TheCometCursor(’cd_electric’,0,626);</script>  


要完成此效果把如下代码加入到<head>区域中 
<SCRIPT LANGUAGE="javascript"> 
<!-- Begin 
var x, y, xold, yold, xdiff, ydiff; 
var dir = Array(); 
dir[0] = "n-resize"; 
dir[1]="ne-resize"; 
dir[2]="e-resize"; 
dir[3]="se-resize"; 
dir[4] = "s-resize"; 
dir[5]="sw-resize"; 
dir[6]="w-resize"; 
dir[7]="nw-resize"; 
document.onmousemove = FindXY; 
function display(direction) { 
document.body.style.cursor = dir[direction]; 

function FindXY(loc) { 
x = (document.layers) ? loc.pageX : event.clientX; 
y = (document.layers) ? loc.pageY : event.clientY; 
xdiff = x - xold; 
ydiff = y - yold 
if ((xdiff <  2) && (ydiff < -2)) display(0); 
if ((xdiff <  2) && (ydiff >  2)) display(4); 
if ((xdiff >  2) && (ydiff <  2)) display(2); 
if ((xdiff < -2) && (ydiff <  2)) display(6); 
if ((xdiff >  2) && (ydiff >  2)) display(3); 
if ((xdiff >  2) && (ydiff < -2)) display(1); 
if ((xdiff < -2) && (ydiff >  2)) display(5); 
if ((xdiff < -2) && (ydiff < -2)) display(7); 
xold = x; 
yold = y; 

//  End --> 
</script>  


从一个Blog中分离出来的好代码   [ 日期:2005-06-07 ]   [ 来自: ]/********************************************************************** 

*                       从一个Blog中分离出来的好代码 

*        如果需要更多代码,请到:http://www.relaxlife.net 感觉好帮我顶! 

*         

*********************************************************************/ 
<% 
’//----------日期转换成字符串函数 
Function DateToStr(DateTime,ShowType)   
    Dim DateMonth,DateDay,DateHour,DateMinute 
    DateMonth=Month(DateTime) 
    DateDay=Day(DateTime) 
    DateHour=Hour(DateTime) 
    DateMinute=Minute(DateTime) 
    If Len(DateMonth)<2 Then DateMonth="0"&DateMonth 
    If Len(DateDay)<2 Then DateDay="0"&DateDay 
    Select Case ShowType 
    Case "Y-m-d"   
        DateToStr=Year(DateTime)&"-"&DateMonth&"-"&DateDay 
    Case "Y-m-d H:I A" 
        Dim DateAMPM 
        If DateHour>12 Then  
            DateHour=DateHour-12 
            DateAMPM="PM" 
        Else 
            DateHour=DateHour 
            DateAMPM="AM" 
        End If 
        If Len(DateHour)<2 Then DateHour="0"&DateHour     
        If Len(DateMinute)<2 Then DateMinute="0"&DateMinute 
        DateToStr=Year(DateTime)&"-"&DateMonth&"-"&DateDay&" "&DateHour&":"&DateMinute&" "&DateAMPM 
    Case "Y-m-d H:I:S" 
        Dim DateSecond 
        DateSecond=Second(DateTime) 
        If Len(DateHour)<2 Then DateHour="0"&DateHour     
        If Len(DateMinute)<2 Then DateMinute="0"&DateMinute 
        If Len(DateSecond)<2 Then DateSecond="0"&DateSecond 
        DateToStr=Year(DateTime)&"-"&DateMonth&"-"&DateDay&" "&DateHour&":"&DateMinute&":"&DateSecond 
    Case "YmdHIS" 
        DateSecond=Second(DateTime) 
        If Len(DateHour)<2 Then DateHour="0"&DateHour     
        If Len(DateMinute)<2 Then DateMinute="0"&DateMinute 
        If Len(DateSecond)<2 Then DateSecond="0"&DateSecond 
        DateToStr=Year(DateTime)&DateMonth&DateDay&DateHour&DateMinute&DateSecond     
    Case "ym" 
        DateToStr=Right(Year(DateTime),2)&DateMonth 
    Case "d" 
        DateToStr=DateDay 
    Case Else 
        If Len(DateHour)<2 Then DateHour="0"&DateHour 
        If Len(DateMinute)<2 Then DateMinute="0"&DateMinute 
        DateToStr=Year(DateTime)&"-"&DateMonth&"-"&DateDay&" "&DateHour&":"&DateMinute 
    End Select 
End Function  


’//--------------截取字符串中有前N个字符。 
Function CutStr(byVal Str,byVal StrLen) 
    Dim l,t,c,i 
    l=Len(str) 
    t=0 
    For i=1 To l 
        c=AscW(Mid(str,i,1)) 
        If c<0 Or c>255 Then t=t+2 Else t=t+1 
        IF t>=StrLen Then 
            CutStr=left(Str,i)&"..." 
            Exit For 
        Else 
            CutStr=Str 
        End If 
    Next 
End Function  

’//--------------随机产生N个字符。 
Function Generator(Length) 
    Dim i, tempS 
    tempS = "abcdefghijklmnopqrstuvwxyz1234567890"  
    Generator = "" 
    If isNumeric(Length) = False Then  
        Exit Function  
    End If  
    For i = 1 to Length  
        Randomize  
        Generator = Generator & Mid(tempS,Int((Len(tempS) * Rnd) + 1),1) 
    Next  
End Function   

’//-------------过滤无效字符 
Function CheckStr(byVal ChkStr)  
    Dim Str:Str=ChkStr 
    Str=Trim(Str) 
    If IsNull(Str) Then 
        CheckStr = "" 
        Exit Function  
    End If 
    Dim re 
    Set re=new RegExp 
    re.IgnoreCase =True 
    re.Global=True 
    re.Pattern="(\r\n){3,}" 
    Str=re.Replace(Str,"$1$1$1") 
    Set re=Nothing 
    Str = Replace(Str,"’","’’") 
    Str = Replace(Str, "select", "sele;ct") 
    Str = Replace(Str, "join", "joi;n") 
    Str = Replace(Str, "union", "uni;on") 
    Str = Replace(Str, "where", "whe;re") 
    Str = Replace(Str, "insert", "inse;rt") 
    Str = Replace(Str, "delete", "dele;te") 
    Str = Replace(Str, "update", "upd;ate") 
    Str = Replace(Str, "like", "like;") 
    Str = Replace(Str, "drop", "drop;") 
    Str = Replace(Str, "create", "cre;ate") 
    Str = Replace(Str, "modify", "modi;fy") 
    Str = Replace(Str, "rename", "rena;me") 
    Str = Replace(Str, "alter", "alte;r") 
    Str = Replace(Str, "cast", "cas;t") 
    CheckStr=Str 
End Function 
’//-------------反过滤无效字符 
Function UnCheckStr(Str) 
        Str = Replace(Str, "sele;ct", "select") 
        Str = Replace(Str, "joi;n", "join") 
        Str = Replace(Str, "uni;on", "union") 
        Str = Replace(Str, "whe;re", "where") 
        Str = Replace(Str, "inse;rt", "insert") 
        Str = Replace(Str, "dele;te", "delete") 
        Str = Replace(Str, "upd;ate", "update") 
        Str = Replace(Str, "like;", "like") 
        Str = Replace(Str, "drop;", "drop") 
        Str = Replace(Str, "cre;ate", "create") 
        Str = Replace(Str, "modi;fy", "modify") 
        Str = Replace(Str, "rena;me", "rename") 
        Str = Replace(Str, "alte;r", "alter") 
        Str = Replace(Str, "cas;t", "cast") 
        UnCheckStr=Str 
End Function  

’//-----------------------转换HTML代码 
Function HTMLEncode(reString)  
    Dim Str:Str=reString 
    If Not IsNull(Str) Then 
        Str = UnCheckStr(Str) 
        Str = Replace(Str, "&", "&;") 
        Str = Replace(Str, ">", ">;") 
        Str = Replace(Str, "<", "<;") 
        Str = Replace(Str, CHR(32), " ;") 
        Str = Replace(Str, CHR(9), " ; ; ; ;") 
        Str = Replace(Str, CHR(9), " ; ; ; ;") 
        Str = Replace(Str, CHR(34),"";") 
        Str = Replace(Str, CHR(39),"’;") 
        Str = Replace(Str, CHR(13), "") 
        Str = Replace(Str, CHR(10), "<br>") 
        HTMLEncode = Str 
    End If 
End Function  

’//---------------------------切割前行内容 
Function SplitLines(byVal Content,byVal ContentNums)  
    Dim ts,i,l 
    If IsNull(Content) Then Exit Function 
    i=1 
    ts = 0 
    For i=1 to Len(Content) 
          l=Mid(Content,i,4) 
          If l="<br>" Then 
             ts=ts+1 
          End If 
          If ts>ContentNums Then Exit For  
    Next 
    If ts>ContentNums Then 
        Content=Left(Content,i-1) 
    End If 
    SplitLines=Content 
End Function  

’//---------------------------返回时间差(秒) 
Function GetEndTimeNum(StartTime) 
    GetEndTimeNum = FormatNumber(Timer()-StartTime,6,-1) 
End Function  

’//------------------------删除文件 
Function DeleteFiles(FilePath) 
    Dim FSO 
    Set FSO=Server.CreateObject("Scripting.FileSystemObject") 
    If Err<>0 Then 
        Err.Clear 
        Response.Write("服务器关闭FSO,无法删除文件") 
    Else 
        If FSO.FileExists(FilePath) Then 
            FSO.DeleteFile FilePath,True 
            DeleteFiles = 1 
        Else 
            DeleteFiles = 0 
        End If 
    End If 
    Set FSO = Nothing 
End Function  

’//-----------------------查看占用空间 
Function GetTotalSize(GetLocal,GetType) 
    Dim FSO 
    Set FSO=Server.CreateObject("Scripting.FileSystemObject") 
    If Err<>0 Then 
        Err.Clear 
        GetTotalSize="服务器关闭FSO,查看占用空间失败" 
    Else 
        Dim SiteFolder 
        If GetType="Folder" Then 
            Set SiteFolder=FSO.GetFolder(GetLocal)  
        Else 
            Set SiteFolder=FSO.GetFile(GetLocal)  
        End If 
        GetTotalSize=SiteFolder.Size 
        If GetTotalSize>1024*1024 Then 
        GetTotalSize=GetTotalSize/1024/1024 
        If inStr(GetTotalSize,".") Then GetTotalSize = Left(GetTotalSize,inStr(GetTotalSize,".")+2) 
            GetTotalSize=GetTotalSize&" MB" 
        Else 
            GetTotalSize=Fix(GetTotalSize/1024)&" KB" 
  , ;      End If 
        Set SiteFolder=Nothing 
    End If 
    Set FSO=Nothing 
End Function  

’//----------------------------复制文件 
Function CopyFiles(TempSource,TempEnd) 
    Dim FSO 
    Set FSO = Server.CreateObject("Scripting.FileSystemObject") 
    If Err<>0 Then 
        Err.Clear 
        Response.Write("服务器关闭FSO,无法复制文件") 
    Else 
        If FSO.FileExists(TempEnd) then 
           Response.Write "目标备份文件 <b>" & TempEnd & "</b> 已存在,请先删除!" 
           Set FSO=Nothing 
           Exit Function 
        End If 
        If FSO.FileExists(TempSource) Then 
        Else 
           Response.Write "要复制的源数据库文件 <b>"&TempSource&"</b> 不存在!" 
           Set FSO=Nothing 
           Exit Function 
        End If 
        FSO.CopyFile TempSource,TempEnd 
        Response.Write "已经成功复制文件 <b>"&TempSource&"</b> 到 <b>"&TempEnd&"</b>" 
    End If 
    Set FSO = Nothing 
End Function  


’-------------------------------------------------------True/False------------------------------------- 
’//----------------检测是否有效的E-mail地址 
Function IsValidEmail(Email) 
    Dim names, name, i, c 
    IsValidEmail = True 
    Names = Split(email, "@") 
    If UBound(names) <> 1 Then 
           IsValidEmail = False 
           Exit Function 
    End If 
    For Each name IN names 
        If Len(name) <= 0 Then 
             IsValidEmail = False 
             Exit Function 
           End If 
           For i = 1 to Len(name) 
             c = Lcase(Mid(name, i, 1)) 
             If InStr("abcdefghijklmnopqrstuvwxyz_-.", c) <= 0 And Not IsNumeric(c) Then 
                   IsValidEmail = false 
                   Exit Function 
             End If 
           Next 
           If Left(name, 1) = "." or Right(name, 1) = "." Then 
              IsValidEmail = false 
              Exit Function 
           End If 
    Next 
    If InStr(names(1), ".") <= 0 Then 
           IsValidEmail = False 
           Exit Function 
    End If 
    i = Len(names(1)) - InStrRev(names(1), ".") 
    If i <> 2 And i <> 3 Then 
           IsValidEmail = False 
           Exit Function 
    End If 
    If InStr(email, "..") > 0 Then 
           IsValidEmail = False 
    End If 
End Function  

’//----------------检测是否开通组件 
’FileUp上传组件:<%=CheckObjInstalled("FileUp.upload") 
’FSO文本读写:<%=CheckObjInstalled("Scripting.FileSystemObject") 
’数据库使用:<%=CheckObjInstalled("adodb.connection") 
’Jmail组件支持:<%=CheckObjInstalled("JMail.SMTPMail") 
’GflSDK组件支持:<%=CheckObjInstalled("GflAx190.GflAx") 
’EasyMail邮件支持:<%=CheckObjInstalled("easymail.Mailsend") 
’无组件上传-ADODB.Stream:<%=CheckObjInstalled("Scripting.Dictionary") 
’无组件上传-Scripting.Dictionary :<%=CheckObjInstalled("Scripting.Dictionary") 
Function CheckObjInstalled(strClassString) 
    On Error Resume Next 
    Dim TmpObj 
    Set TmpObj = Server.CreateObject(strClassString) 
    If Err = 0 OR Err = -2147221477 Then 
        CheckObjInstalled= "<font color=""#00FF00""><b>√</b></font>" 
    ElseIF Err = 1 OR Err = -2147221005 Then 
        CheckObjInstalled="<font color=""#FF0000""><b>×</b></font>" 
    End If 
    Err.Clear 
    Set TmpObj = Nothing 
End Function  

’//----------------检测用户名是否是有效的字符 
Function IsValidUserName(byVal UserName) 
    Dim i,c 
    IsValidUserName = True 
    For i = 1 To Len(UserName) 
        c = Lcase(Mid(UserName, i, 1)) 
        IF InStr("$!<>?#^%@~`&*(){};:+=’""          ", c) > 0 Then 
                IsValidUserName = False 
                Exit Function 
        End IF 
    Next 
End Function  

’//------------检测是否有效的数字 
Function IsInteger(Para)  
    IsInteger=False 
    If Not (IsNull(Para) Or Trim(Para)="" Or Not IsNumeric(Para)) Then 
        IsInteger=True 
    End If 
End Function  

’限制上传文件类型 
UP_FileType = "RAR,ZIP,SWF,JPG,PNG,GIF,DOC,TXT,CHM,PDF,ACE,JPG,MP3,WMA,WMV,MIDI,AVI,RM,RA,RMVB,MOV,TORRENT" 
Function IsvalidFile(File_Type)   
    IsvalidFile = False 
    Dim GName 
    For Each GName in UP_FileType 
        If File_Type = GName Then 
            IsvalidFile = True 
            Exit For 
        End If 
    Next 
End Function  

’--------------------------------------------------------------------------------------------------- 
’//-------------------本页里关闭Conn对象,放在最后一行写。 
IF TypeName(Conn)<>"Nothing" Then 
    Conn.Close 
    Set Conn=Nothing 
End IF 
’//--------------------------设置Cookie 
Const CookieName="Relaxlife" 
Response.Cookies(CookieName)("memName")=memLogin("mem_Name") 
Response.Cookies(CookieName)("memPassword")=memLogin("mem_Password") 
Response.Cookies(CookieName)("memStatus")=memLogin("mem_Status") 
Select Case Request.Form("CookieTime") 
    Case 1 
        Response.Cookies(CookieName).Expires=Date+1’保存一天 
    Case 2 
        Response.Cookies(CookieName).Expires=Date+31’保存一月 
    Case 3 
        Response.Cookies(CookieName).Expires=Date+365’保存一年 
End Select 
’//--------------------------取Cookie值 
memName=CheckStr(Request.Cookies(CookieName)("memName")) 
memPassword=CheckStr(Request.Cookies(CookieName)("memPassword")) 
memStatus=CheckStr(Request.Cookies(CookieName)("memStatus")) 
’//----------------------------3秒后自动返回 
msg_Content="<a href=’blogview.asp?logID="&blog_ID&"’>评论发表成功,点击返回,或者3秒后自动返回</a><meta http-equiv=’refresh’ content=’3;url=blogview.asp?logID="&blog_ID&"’>" 
’//----------------------------------- 
Reg_Title="错误信息" 
Reg_Message="密码长度不符合<br><a href=’javascript:history.go(-1);’>请返回重新输入</a>" 
%> 
<table width="95%" border="0" align="center" cellpadding="4" cellspacing="1" bgcolor="#CCCCCC"> 
  <tr><td height="24" align="center"><strong><%=Reg_Title%></strong></td></tr> 
  <tr><td height="88" align="center" valign="middle" bgcolor="#FFFFFF"><%=Reg_Message%></td></tr> 
</table> 
<% 
’//--------------------------Application的应用 
’写入表情符号 
Dim Arr_Smilies 
IF Not IsArray(Application(CookieName&"_blog_Smilies")) Then 
    Dim log_SmiliesList 
    Set log_SmiliesList=Server.CreateObject("ADODB.RecordSet") 
    SQL="SELECT sm_ID,sm_Image,sm_Text FROM blog_Smilies ORDER BY sm_ID ASC" 
    log_SmiliesList.Open SQL,Conn,1,1 
    SQLQueryNums=SQLQueryNums+1 
    If log_SmiliesList.EOF And log_SmiliesList.BOF Then 
        Redim Arr_Smilies(3,0) 
    Else 
        Arr_Smilies=log_SmiliesList.GetRows 
    End If 
    log_SmiliesList.Close 
    Set log_SmiliesList=Nothing 
    Application.Lock 
    Application(CookieName&"_blog_Smilies")=Arr_Smilies 
    Application.UnLock 
Else 
    Arr_Smilies=Application(CookieName&"_blog_Smilies") 
End IF 
’//------------------------ 
If Request.QueryString("type")="EnableSite" Then 
    Application.Lock() 
    Application(CookieName & "_SiteEnable") = 1 
    Application(CookieName & "_SiteDisbleWhy") = "" 
    Application.UnLock() 
    Response.Write("<a href=""admincp.asp?action=setting"">开启站点成功,请点击返回</a>") 
ElseIF Request.QueryString("type")="DisableSite" Then 
    Set Conn=Nothing 
    FreeApplicationMemory 
    Application.Lock() 
    Application(CookieName & "_SiteEnable") = 0 
    Application(CookieName & "_SiteDisbleWhy")="站点维护中,请稍候再来..." 
    Application.UnLock() 
    Response.Write("<br><a href=""admincp.asp?action=setting"">关闭站点成功</a>") 
Else 
    If Application(CookieName & "_SiteEnable") = 0 AND Application(CookieName & "_SiteDisbleWhy")<>"" Then 
        Response.Write("<b>站点已关闭</b> ; ; ; ;| ; ; ; ;<a href=""admincp.asp?action=setting&type=EnableSite"">点击开启站点</a>") 
    Else 
        Response.Write("<b>站点已开启</b> ; ; ; ;| ; ; ; ;<a href=""admincp.asp?action=setting&type=DisableSite"">点击关闭站点</a>") 
    End If 
End If 
’//-----------------------------------释放网站数据列表 
Function FreeApplicationMemory 
    Response.Write "<b>释放网站数据列表:</b>" & VbCrLf 
    Dim Thing 
    For Each Thing IN Application.Contents 
        If Left(Thing,Len(CookieName)) = CookieName Then 
            Response.Write "<font color=""gray"">" & thing & "</font><br>" 
            If isObject(Application.Contents(Thing)) Then 
                Application.Contents(Thing).Close 
                Set Application.Contents(Thing) = Nothing 
                Application.Contents(Thing) = Null 
                Response.Write "成功关闭对象" 
            ElseIF isArray(Application.Contents(Thing)) Then 
                Set Application.Contents(Thing) = Nothing 
                Application.Contents(Thing) = Null 
                Response.Write "成功释放数组" 
            Else 
                Response.Write(HtmlEncode(Application.Contents(Thing))) 
                Application.Contents(Thing) = Null 
            End If 
            Response.Write(" ; ;") 
        End If 
    Next 
End Function 
’//----------------------- 
’定义数据库链接文件,根据自己的情况修改 
Const AccessPath="blogdata" 
Const AccessFile="loveyuki.asa"  
Const IPAccessFile="ipdata.asa"  

’------------定义数据库连接 
Dim Conn 
On Error Resume Next 
Set Conn= Server.CreateObject("ADODB.Connection") 
Conn.ConnectionString="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath(AccessPath&"/"&AccessFile) 
Conn.Open 
If Err Then 
    Err.Clear 
    Set Conn = Nothing 
    Response.Write("<head><meta http-equiv=""Content-Type"" content=""text/html; charset=utf-8"" /><title>数据库连接出错,请检查连接字串</title></head><body><div align=""center"" style=""width:400px;height:100px;padding: 8px;font-size:9pt;border: 1px solid ThreeDShadow;POSITION:absolute;top:expression((document.body.offsetHeight-100)/2);left:expression((document.body.offsetWidth-400)/2);""><table width=""100%"" height=""100%"" style=""font-size:12px;font-family:Tahoma;""><tr><td align=""center""><strong>数据库连接出错,请检查连接字串</strong></td></tr></table></div></body>") 
    Response.End 
End If  

’------------压缩数据库 
    Dim FSO,Engine 
    Set FSO=Server.CreateObject("Scripting.FileSystemObject") 
    If Err<>0 Then 
        Err.Clear 
        Response.Write("服务器关闭FSO,无法压缩数据库") 
    Else 
        If FSO.FileExists(Server.Mappath(AccessPath&"/"&AccessFile)) Then 
            Response.Write "压缩数据库开始,网站暂停一切用户的前台操作......<br>" 
            Conn.Close 
            Set Conn=Nothing 
            Application.Lock 
            FreeApplicationMemory 
            Application(CookieName & "_SiteEnable") = 0 
            Application(CookieName & "_SiteDisbleWhy") = "网站暂停中,请稍候几分钟后再来..." 
            Application.UnLock 
            Set Engine = CreateObject("JRO.JetEngine") 
            Engine.CompactDatabase "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath(AccessPath&"/"&AccessFile), "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.Mappath(AccessPath&"/"&AccessFile&".temp") 
            FSO.CopyFile Server.Mappath(AccessPath&"/"&AccessFile&".temp"),Server.Mappath(AccessPath&"/"&AccessFile) 
            FSO.DeleteFile(Server.Mappath(AccessPath&"/"&AccessFile&".temp")) 
            Set FSO = Nothing 
            Set Engine = Nothing 
            Response.write "压缩数据库完成..." 
            Application.Lock 
            Application(CookieName & "_SiteEnable") = 1 
            Application(CookieName & "_SiteDisbleWhy") = "" 
            Application.UnLock 
            Response.Write "<br>网站恢复正常访问..." 
            Response.Write("<br><a href=""admincp.asp?action=database"">请点击返回</a>") 
        End If 
    End If 
    Set FSO=Nothing 
’-----------------------备份数据库 
    Response.Write "备份数据库开始,网站暂停一切用户的前台操作......<br>" 
    Conn.Close 
    Set Conn=Nothing 
    Application.Lock 
    Application(CookieName & "_SiteEnable") = 0 
    application(CookieName & "_SiteDisbleWhy") = "网站暂停中,请稍候几分钟后再来..." 
    Application.UnLock 
    CopyFiles Server.Mappath(AccessPath&"/"&AccessFile),Server.Mappath(AccessPath&"/"&AccessFile & "_" & DateToStr(Now(),"YmdHIS") &".BAK") 
    Response.write "<br>备份完成..." 
    Application.Lock 
    Application(CookieName & "_SiteEnable") = 1 
    Application(CookieName & "_SiteDisbleWhy") = "" 
    Application.UnLock 
    Response.write "<br>网站恢复正常访问..." 
    Response.Write("<br><a href=""admincp.asp?action=database"">请点击返回</a>") 
     
’--------------删除的文件 
    If Request.QueryString("filename")=Empty Then 
        Response.Write("<a href=""admincp.asp?action=database"">要删除的文件名不能为空,请点击返回</a>") 
    Else 
        If DeleteFiles(Server.MapPath(AccessPath&"/"&Request.QueryString("filename")))=1 Then 
            Response.Write("<a href=""admincp.asp?action=database"">文件删除成功,请点击返回</a>") 
        Else 
            Response.Write("<a href=""admincp.asp?action=database"">文件删除失败,请点击返回</a>") 
        End If 
    End If 
     
’------------------文件列表 
    Response.Write("<b>备份文件列表</b><br>") 
    Dim DataFolder,DataFileList,DataFile,DataFileName 
    Set FSO=Server.CreateObject("Scripting.FileSystemObject") 
    If Err<>0 Then 
        Err.Clear 
        Response.Write("服务器关闭FSO,无法查看备份文件列表") 
    Else 
        Set DataFolder=FSO.GetFolder(Server.MapPath(AccessPath)) 
        Set DataFileList=DataFolder.Files 
        For Each DataFile IN DataFileList 
            If Ubound(Split(DataFile,"."))>=2 Then 
                DataFileName=DataFile.Name 
                Response.Write("<font color=""#FF0000"">"&DataFileName&"</font> ; ;| ; ;<b><a href=""blogdata/"&DataFileName&""">下载此文件</a></b> ; ;| ; ;<b><a href=""admincp.asp?action=database&type=DeleFile&filename="&DataFileName&""">删除此文件</a></b> ; ;| ; ;<b><a href=""admincp.asp?action=database&type=Restore&filename="&DataFileName&""">从此文件还原数据</a></b><br>") 
            End If 
        Next 
    End If 
    Set FSO=Nothing 
’------------------SQL语句执行 
    Dim SQL_Query 
    SQL_Query=Request.Form("SQL_Query") 
    Conn.ExeCute(SQL_Query) 
    SQLQueryNums=SQLQueryNums+1 
    Response.Write("<a href=""admincp.asp?action=database"">SQL语句执行成功,请点击返回</a>")  

%>  


引用通告地址 (0): 
http://blog.chenoe.com/blog//trackback.asp?tbID=1797 
http://blog.chenoe.com/blog//trackback.asp?tbID=1797&CP=GBK  


base64编码、解码函数  
http://www.3pcode.com/article/article_3/1858.htm  


这是我看完几个base64编码、解码函数后自己改写的。 
因为,在中文操作系统的VBscript中,使用的是unicode字符集,所以 
很多base64编码、解码函数在理论上是正确的,但实际不能运行!  

我加写了几个Unicode与Ansi编码转换的函数,现贴出来,请大家执教!  


文件名称base64test.asp  

<%  

sBASE_64_CHARACTERS = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"   
sBASE_64_CHARACTERS = strUnicode2Ansi(sBASE_64_CHARACTERS)  

Function strUnicodeLen(asContents) 
  ’计算unicode字符串的Ansi编码的长度 
  asContents1="a"&asContents 
  len1=len(asContents1) 
  k=0 
  for i=1 to len1 
      asc1=asc(mid(asContents1,i,1)) 
      if asc1<0 then asc1=65536+asc1 
      if asc1>255 then 
         k=k+2 
      else 
         k=k+1 
      end if 
  next 
  strUnicodeLen=k-1 
End Function  

Function strUnicode2Ansi(asContents) 
  ’将Unicode编码的字符串,转换成Ansi编码的字符串 
  strUnicode2Ansi="" 
  len1=len(asContents) 
  for i=1 to len1 
      varchar=mid(asContents,i,1) 
      varasc=asc(varchar) 
      if , varasc<0 then varasc=varasc+65536 
      if varasc>255 then 
         varHex=Hex(varasc) 
         varlow=left(varHex,2) 
         varhigh=right(varHex,2) 
         strUnicode2Ansi=strUnicode2Ansi & chrb("&H" & varlow ) & chrb("&H" & varhigh ) 
      else 
         strUnicode2Ansi=strUnicode2Ansi & chrb(varasc) 
      end if 
   next 
End function  

Function strAnsi2Unicode(asContents) 
  ’将Ansi编码的字符串,转换成Unicode编码的字符串 
  strAnsi2Unicode = "" 
  len1=lenb(asContents) 
  if len1=0 then exit function 
  for i=1 to len1 
      varchar=midb(asContents,i,1) 
      varasc=ascb(varchar) 
      if varasc > 127  then  
         strAnsi2Unicode = strAnsi2Unicode & chr(ascw(midb(asContents,i+1,1) & varchar)) 
         i=i+1 
      else 
         strAnsi2Unicode = strAnsi2Unicode & chr(varasc) 
      end if 
  next 
End function  

Function Base64encode(asContents)   
’将Ansi编码的字符串进行Base64编码 
’asContents应当是ANSI编码的字符串(二进制的字符串也可以) 
Dim lnPosition   
Dim lsResult   
Dim Char1   
Dim Char2   
Dim Char3   
Dim Char4   
Dim Byte1   
Dim Byte2   
Dim Byte3   
Dim SaveBits1   
Dim SaveBits2   
Dim lsGroupBinary   
Dim lsGroup64   
Dim m4,len1,len2  

len1=Lenb(asContents) 
if len1<1 then  
   Base64encode="" 
   exit Function 
end if  

m3=Len1 Mod 3  
If M3 > 0 Then asContents = asContents & String(3-M3, chrb(0))   
’补足位数是为了便于计算  

IF m3 > 0 THEN  
   len1=len1+(3-m3) 
   len2=len1-3 
else 
   len2=len1 
end if  

lsResult = ""    

For lnPosition = 1 To len2 Step 3   
    lsGroup64 = ""   
    lsGroupBinary = Midb(asContents, lnPosition, 3)    

    Byte1 = Ascb(Midb(lsGroupBinary, 1, 1)): SaveBits1 = Byte1 And 3   
    Byte2 = Ascb(Midb(lsGroupBinary, 2, 1)): SaveBits2 = Byte2 And 15   
    Byte3 = Ascb(Midb(lsGroupBinary, 3, 1))    

    Char1 = Midb(sBASE_64_CHARACTERS, ((Byte1 And 252) \ 4) + 1, 1)   
    Char2 = Midb(sBASE_64_CHARACTERS, (((Byte2 And 240) \ 16) Or (SaveBits1 * 16) And &HFF) + 1, 1)   
    Char3 = Midb(sBASE_64_CHARACTERS, (((Byte3 And 192) \ 64) Or (SaveBits2 * 4) And &HFF) + 1, 1)   
    Char4 = Midb(sBASE_64_CHARACTERS, (Byte3 And 63) + 1, 1)   
    lsGroup64 = Char1 & Char2 & Char3 & Char4   
     
    lsResult = lsResult & lsGroup64   
Next    

’处理最后剩余的几个字符 
if M3 > 0  then 
    lsGroup64 = ""   
    lsGroupBinary = Midb(asContents, len2+1, 3)    

    Byte1 = Ascb(Midb(lsGroupBinary, 1, 1)): SaveBits1 = Byte1 And 3   
    Byte2 = Ascb(Midb(lsGroupBinary, 2, 1)): SaveBits2 = Byte2 And 15   
    Byte3 = Ascb(Midb(lsGroupBinary, 3, 1))    

    Char1 = Midb(sBASE_64_CHARACTERS, ((Byte1 And 252) \ 4) + 1, 1)   
    Char2 = Midb(sBASE_64_CHARACTERS, (((Byte2 And 240) \ 16) Or (SaveBits1 * 16) And &HFF) + 1, 1)   
    Char3 = Midb(sBASE_64_CHARACTERS, (((Byte3 And 192) \ 64) Or (SaveBits2 * 4) And &HFF) + 1, 1)    

    if M3=1 then 
       lsGroup64 = Char1 & Char2 & ChrB(61) & ChrB(61)   ’用=号补足位数 
    else 
       lsGroup64 = Char1 & Char2 & Char3 & ChrB(61)      ’用=号补足位数 
    end if 
     
    lsResult = lsResult & lsGroup64   
end if  

Base64encode = lsResult    

End Function    


Function Base64decode(asContents)   
’将Base64编码字符串转换成Ansi编码的字符串 
’asContents应当也是ANSI编码的字符串(二进制的字符串也可以) 
Dim lsResult   
Dim lnPosition   
Dim lsGroup64, lsGroupBinary   
Dim Char1, Char2, Char3, Char4   
Dim Byte1, Byte2, Byte3   
Dim M4,len1,len2  

len1= Lenb(asContents)  
M4 = len1 Mod 4  

if len1 < 1 or M4 > 0 then 
   ’字符串长度应当是4的倍数 
   Base64decode = ""   
   exit Function   
end if 
        
’判断最后一位是不是 = 号 
’判断倒数第二位是不是 = 号 
’这里m4表示最后剩余的需要单独处理的字符个数 
if midb(asContents, len1, 1) = chrb(61)   then   m4=3  
if midb(asContents, len1-1, 1) = chrb(61) then   m4=2  

if m4 = 0 then 
   len2=len1 
else 
   len2=len1-4 
end if  

For lnPosition = 1 To Len2 Step 4   
    lsGroupBinary = ""   
    lsGroup64 = Midb(asContents, lnPosition, 4)   
    Char1 = InStrb(sBASE_64_CHARACTERS, Midb(lsGroup64, 1, 1)) - 1   
    Char2 = InStrb(sBASE_64_CHARACTERS, Midb(lsGroup64, 2, 1)) - 1   
    Char3 = InStrb(sBASE_64_CHARACTERS, Midb(lsGroup64, 3, 1)) - 1   
    Char4 = InStrb(sBASE_64_CHARACTERS, Midb(lsGroup64, 4, 1)) - 1   
    Byte1 = Chrb(((Char2 And 48) \ 16) Or (Char1 * 4) And &HFF)   
    Byte2 = lsGroupBinary & Chrb(((Char3 And 60) \ 4) Or (Char2 * 16) And &HFF)   
    Byte3 = Chrb((((Char3 And 3) * 64) And &HFF) Or (Char4 And 63))   
    lsGroupBinary = Byte1 & Byte2 & Byte3   
     
    lsResult = lsResult & lsGroupBinary   
Next   

’处理最后剩余的几个字符 
if M4 > 0 then  
    lsGroupBinary = ""   
    lsGroup64 = Midb(asContents, len2+1, m4) & chrB(65)   ’chr(65)=A,转换成值为0 
    if M4=2 then                                          ’补足4位,是为了便于计算  
        lsGroup64 = lsGroup64 & chrB(65)                   
    end if 
    Char1 = InStrb(sBASE_64_CHARACTERS, Midb(lsGroup64, 1, 1)) - 1   
    Char2 = InStrb(sBASE_64_CHARACTERS, Midb(lsGroup64, 2, 1)) - 1   
    Char3 = InStrb(sBASE_64_CHARACTERS, Midb(lsGroup64, 3, 1)) - 1   
    Char4 = InStrb(sBASE_64_CHARACTERS, Midb(lsGroup64, 4, 1)) - 1   
    Byte1 = Chrb(((Char2 And 48) \ 16) Or (Char1 * 4) And &HFF)   
    Byte2 = lsGroupBinary & Chrb(((Char3 And 60) \ 4) Or (Char2 * 16) And &HFF)   
    Byte3 = Chrb((((Char3 And 3) * 64) And &HFF) Or (Char4 And 63))   
   
    if M4=2 then 
       lsGroupBinary = Byte1 
    elseif M4=3 then 
       lsGroupBinary = Byte1 & Byte2 
    end if 
     
    lsResult = lsResult & lsGroupBinary   
end if  

Base64decode = lsResult    

End Function

 
 网友评论
暂无网友评论!

发表评论
昵称*
评论内容*
请选择表情
赞成
思考
惊奇
随便
怀疑
质问
反对
疲劳
无奈
 
分类列表
网络
Excel
Windows
Word
Asp
Html
Java、JS
安全
DOS
VB
php
手机

返回专辑首页