<% '**************************************' ' 作者: 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 '=================================================================================== %>