ASP的自定义函数[4]

货币大写转换函数的更新

 

<%
dim a '要转换成大写的金额
dim atoc '转换之后的值
Dim String1 '如下定义
Dim String2 '如下定义
Dim String3 '从原A值中取出的值
Dim I '循环变量
Dim J 'A的值乘以100的字符串长度
Dim Ch1 '数字的汉语读法
Dim Ch2 '数字位的汉字读法
Dim nZero '用来计算连续的零值是几个

String1 = "零壹贰叁肆伍陆柒捌玖"
String2 = "万仟佰拾亿仟佰拾万仟佰拾元角分"
nZero = 0

If InStr(1, CStr(a * 100), ".") <> 0 Then
err.Raise 5000, , "此函数( AtoC() )只能转换小数点后有两位以内的数!"
End If

J = Len(CStr(a * 100))
String2 = Right(String2, J) '取出对应位数的STRING2的值

For I = 1 To J
String3 = Mid(a * 100, I, 1) '取出需转换的某一位的值

If I <> (J - 3) + 1 And I <> (J - 7) + 1 And I <> (J - 11) + 1 And I <>(J - 15) + 1 Then
If String3 = 0 Then
Ch1 = ""
Ch2 = ""
nZero = nZero + 1
ElseIf String3 <> 0 And nZero <> 0 Then
Ch1 = "零" & Mid(String1, clng(String3) + 1, 1)
Ch2 = Mid(String2, I, 1)
nZero = 0
Else
Ch1 = Mid(String1, clng(String3) + 1, 1)
Ch2 = Mid(String2, I, 1)
nZero = 0
End If
Else '该位是万亿,亿,万,元位等关键位
If String3 <> 0 And nZero <> 0 Then
Ch1 = "零" & Mid(String1, clng(String3) + 1, 1)
Ch2 = Mid(String2, I, 1)
nZero = 0
ElseIf String3 <> 0 And nZero = 0 Then
Ch1 = Mid(String1, clng(String3) + 1, 1)
Ch2 = Mid(String2, I, 1)
nZero = 0
ElseIf String3 = 0 And nZero >= 3 Then
Ch1 = ""
Ch2 = ""
nZero = nZero + 1
Else
Ch1 = ""
Ch2 = Mid(String2, I, 1)
nZero = nZero + 1
End If

If I = (J - 11) + 1 Or I = (J - 3) + 1 Then '如果该位是亿位或元位,则必须写上
Ch2 = Mid(String2, I, 1)
End If

End If
AtoC = AtoC & Ch1 & Ch2

If I = J And String3 = 0 Then '最后一位(分)为0时,加上“整”
AtoC = AtoC & "整"
End If

Next 
if a=0 then
atoc="零元整"
end if
%>

--------------------------------------------------------------------------------

-- 
本函数计算两个时间的差

Function TimeDiff(sBegin, sEnd)
Dim iHourB, iMinuteB, iSecondB, iMiniSecondB
Dim iHourE, iMinuteE, iSecondE, iMiniSecondE
Dim dTimeB, dTimeE, dTimeDiff
Dim iHour, iMinute, iSecond, iMiniSecond

iHourB = clng(Left(sBegin, 2))
iMinuteB = clng(Mid(sBegin, 4, 2))
iSecondB = clng(Mid(sBegin, 7, 2))
iMiniSecondB = clng(Mid(sBegin, 10, 4))

iHourE = clng(Left(sEnd, 2))
iMinuteE = clng(Mid(sEnd, 4, 2))
iSecondE = clng(Mid(sEnd, 7, 2))
iMiniSecondE = clng(Mid(sEnd, 10, 4))

dTimeB = iHourB * 3600 + iMinuteB * 60 + iSecondB + iMiniSecondB / 1000
dTimeE = iHourE * 3600 + iMinuteE * 60 + iSecondE + iMiniSecondE / 1000
dTimeDiff = dTimeE - dTimeB

iHour = Int(dTimeDiff / 3600)
dTimeDiff = dTimeDiff - iHour * 3600
iMinute = Int(dTimeDiff / 60)
dTimeDiff = dTimeDiff - iMinute * 60
iSecond = Int(dTimeDiff)
dTimeDiff = dTimeDiff - Int(dTimeDiff)
iMiniSecond = dTimeDiff

TimeDiff = iHour & "小时" & iMinute & "分钟" & iSecond & FormatNumber(iMiniSecond, 3) & "秒"
End Function

 

生成一个不重复的随即数字 

Sub CalCaPiao()
Dim strCaiPiaoNoArr() As String
Dim strSQL As String
Dim strCaiPiaoNo As String
strCaiPiaoNo = "01,02,03,04,05,06,07,08,09,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33"
Dim StrTempArr(7) As String
Dim strZhongJiangArr(7) As String
strCaiPiaoNoArr = Split(strCaiPiaoNo, ",")
Dim intRand As Integer
Dim I As Integer
Dim j As Integer
I = 0
Dim find As Boolean
Do While True
find = False
Randomize
intRand = Int((33 * Rnd) + 1)
For j = 0 To I - 1
If StrTempArr(j) = CStr(intRand) Then
find = True
End If
Next
If Not find Then
StrTempArr(j) = CStr(intRand)
strZhongJiangArr(i) = CStr(intRand)
'Text1(i) = strZhongJiangArr(i)
I = I + 1
If I = 7 Then
Exit Do
End If
End If
Loop
End Sub

--------------------------------------------------------------------------------

-- 
简体中文编码对应器 

<% DIM FirstCHR,LastCHR,K,I,J
FirstCHR = Request("FirstCHR") 'FirstCHR="45217" '定义起始值
LastCHR = Request("LastCHR") 'LastCHR="62289" '定义终结值
HttpAddress = Request.ServerVariables("url") '不要动

Sub MakeChineseWord()
Response.write "起始值:"&FirstCHR&" "
Response.write "终止值:"&LastCHR&" "
Response.write "差值= "&LastCHR-FirstCHR+1&"<P>"
FOR J = FirstCHR TO LastCHR 
RESPONSE.WRITE "<a title='"&J&"'>"&CHR(J)&"</a> " 
k = k+1 
if (J mod 20) = 0 then
RESPONSE.WRITE "(最后为"&J&")<p>" 
end if
NEXT
RESPONSE.WRITE "<p>共有:"& K &"中文字<br>"
End Sub
%>

<form action="<%=HttpAddress%>" method="post">
<select name="FirstCHR">
<option value="" SelectED>选择起始值</option>
<%For I = 1 to 72
Response.write "<option value="&(45217+K1)&">"&(45217+K1)&"-"&I&"</option>"
K1 = K1 + 256
Next%>
</select>
<select name="LastCHR">
<option value="" SelectED>选择起始值</option>
<%For I = 1 to 72
Response.write "<option value="&(45310+K2)&">"&(45310+K2)&"-"&I&"</option>"
K2 = K2 + 256
Next%>
</select>

<input type="submit" value="确定">
</form>
<%
if FirstCHR <> "" and LastCHR <> "" then
Call MakeChineseWord()
end if
%> 

显示左边的n个字符(自动识别汉字)函数(探索者)

rem 显示左边的n个字符(自动识别汉字)
Function LeftTrue(str,n)

If len(str)<=n/2 Then
LeftTrue=str
Else
Dim TStr
Dim l,t,c
Dim I
l=len(str)
t=l
TStr=""
t=0
for i=1 to l
c=asc(mid(str,I,1))
If c<0 then c=c+65536
If c>255 then
t=t+2
Else
t=t+1
End If
If t>n Then exit for
TStr=TStr&(mid(str,I,1))
next
LeftTrue = TStr
End If

End Function

--------------------------------------------------------------------------------

版权声明:
作者:Kiyo
链接:https://www.wkiyo.cn/html/2008-01/i138.html
来源:Kiyo's space
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
< <上一篇
下一篇>>