%
'**************************************'
' 作者: YuanFen (YuanFen@msn.com)
' 日期: 2003/09/22
' 更新: 2003/10/06
' 版本: 0.9
'**************************************'
'處理傳入字串的特殊字元, 使其符合 SQL Command
'回傳處理過的字串
Function AdjStr(str)
Adjstr = "''"
IF Not IsNULL(str) Then
IF ""<>str THEN
tmp = str
'======= 處理規則加在這邊 =======
tmp = Replace(tmp, "'", "''")
tmp = Replace(tmp, vbCrLf, "
")
'================================
AdjStr = "'" & Trim(tmp) & "'"
End IF
END IF
End Function
'======================================================================================
'字串補齊函式
'有更好的方式可以使用
'以 LAddChr() 為例
'LAddChr = Left(<補齊字串>+Str,<長度>)
'於傳入字串(str)的右邊,用傳入字元(chr)補齊長度(lenth)
'回傳length長度的字串
'未考慮超過長度的狀況
Function RAddChr(str, chr, lenth)
tmp = ""
For ino = 1 To (lenth-StrLen(str))
tmp = tmp & chr
Next
RAddChr = str & tmp
End Function
'於傳入字串(str)的左邊,用傳入字元(chr)補齊長度(lenth)
'回傳補齊長度的字串
'未考慮超過長度的狀況
Function LAddChr(str, chr, lenth)
tmp = ""
For ino = 1 To (lenth-Len(str))
tmp = chr & tmp
Next
LAddChr = tmp & str
End Function
'=====================================================================================
'全形字函式
'回傳傳入字串(Str)的 bytes 數 (一個全形字為 2 bytes)
Function StrLen(Str)
StrLen = 0
For si=1 To Len(Str)
If Asc(Mid(Str,si,1))>0 Then '半形字
StrLen = StrLen + 1
Else '全形字
StrLen = StrLen + 2
End If
Next
End Function
'回傳傳入字串(Str)第 start 個字元開始,長度為 length bytes 的字串
'不知道 length 超過 StrLen 會怎麼樣
Function StrMid(Str, start, length)
If ""=start Then start = 0
'Response.Write "Str:"&Str&",s:"&start&",l:"&length&"
"&vbCrLf
tmp = ""
For mi=1 To Len(Str)
tmp = tmp & LAddChr(Hex(Asc(Mid(Str,mi,1))),"0",2) '如果16進位數小於等於F,前面補0
Next
For mi=start To start+length-1
IF 127<("&H"&Mid(tmp,mi*2-1,2)) Then '超過127即為全形字的第一個半形
StrMid = StrMid & Chr("&H"&Mid(tmp,mi*2-1,4)) '加上&H代表16進位數
mi = mi+1
Else
StrMid = StrMid & Chr("&H"&Mid(tmp,mi*2-1,2))
End IF
'Response.Write StrMid
Next
'Response.Write "
mi:"&mi&"
"&vbCrLf
End Function
'回傳傳入字串(Str)左邊第一個字元算起,長度為 length bytes 的字串
'不知道 length 超過 StrLen 會怎麼樣
Function StrLeft(Str, length)
tmp = ""
For li=1 To Len(Str)
tmp = tmp & LAddChr(Hex(Asc(Mid(Str,li,1))),"0",2)
Next
For li=1 To length
IF 127<("&H"&Mid(tmp,li*2-1,2)) Then
StrLeft = StrLeft & Chr("&H"&Mid(tmp,li*2-1,4))
li = li+1
Else
StrLeft = StrLeft & Chr("&H"&Mid(tmp,li*2-1,2))
End IF
Next
End Function
'回傳傳入字串(Str)右邊第一個字元算起,長度為 length bytes 的字串
'不知道 length 超過 StrLen 會怎麼樣
Function StrRight(Str, length)
tmp = ""
For ri=1 To Len(Str)
tmp = tmp & LAddChr(Hex(Asc(Mid(Str,ri,1))),"0",2)
Next
For ri=(StrLen(Str)-length+1) To StrLen(Str)
IF 127<("&H"&Mid(tmp,ri*2-1,2)) Then
StrRight = StrRight & Chr("&H"&Mid(tmp,ri*2-1,4))
ri = ri+1
Else
StrRight = StrRight & Chr("&H"&Mid(tmp,ri*2-1,2))
End IF
Next
End Function
'===================================================================================
%>