站內搜尋:Yahoo搜尋的結果,如果沒有給完整的網址,請在站內再搜尋一次!

顯示具有 VBScript 標籤的文章。 顯示所有文章
顯示具有 VBScript 標籤的文章。 顯示所有文章

2016-10-01

VBScript : Convert ASCII to Unicode, Unicode to ASCII

Function AsciiToUnicode(zStr)
        Dim zFrom,zTo,i
        zFrom = zStr
        zTo = ""
        For i = 1 To Len(zStr)
                if ascw(mid(zFrom,i,1)) < 0 then
                        zTo = zTo & "&#" & AscW(mid(zFrom,i,1)) + 65536 & ";"
                ElseIf AscW(mid(zFrom,i,1))>0 and AscW(mid(zFrom,i,1))<127 then
                        zTo = zTo & mid(zFrom,i,1)
                Else
                        zTo = zTo & "&#" & AscW(mid(zFrom,i,1)) & ";"
                End if
        Next
        AsciiToUnicode = zTo
End Function

Function UnicodeToAscii(zStr)
        Dim x,y,z,flag
        flag = 0
        x = InStr(flag + 1,zStr,"&#")
        Do Until x = 0 or x < flag
                x = InStr(flag + 1,zStr,"&#")
                if x <> 0 then
                        y = Mid(zStr,x,8)
                        Select Case InStr(y,";")
                                Case 8
                                        z = ChrW(Mid(y,3,5))
                                Case 7
                                        z = ChrW(Mid(y,3,4))
                                Case 6
                                        z = ChrW(Mid(y,3,3))
                                Case 5
                                        z = ChrW(Mid(y,3,2))
                        End Select
                        if InStr(y,";") > 4 And Asc(z) <> 63 then
                                zStr = Replace(zStr,Left(y,InStr(y,";")),z)
                        End if
                        flag = x
                End if
        Loop
        UnicodeToAscii = zStr
End Function

說明:
  1. Asc : 傳回字串中第一個字母的 ANSI 字元碼 。
  2. AscB 函數是用來處理包含位元組資料的字串, AscB 函數會傳回第一個位元組,而非第一個字元的字元碼。
  3. AscW 函數則是為了使用 Unicode 字元碼的 32 位元作業平台而設計的。此函數會傳回 Unicode 字元碼,而避免將 ANSI 碼轉換為 Unicode 碼處理。
  4. Chr : 傳回指定 ANSI 字元碼所代表的字元。
  5. ChrB 函數是使用於含有位元組資料的 String,而非傳回一個字元,其有可能是一或兩個位元組,而 ChrB 都是傳回一個位元組。
  6. ChrW 函數則是為使用 Unicode 字元碼的 32 位元作業平臺而設計的。ChrW 函數的引數必須是 Unicode 字元碼。


2016-05-22

VBScript檢查字串中不合法的字元

Function ChkChar(strChk)
           Dim i, nPos, zInvaildList
           '預設所要檢查的字串不包含不合法的字元
           ChkChar = True
           '指定那些字元是不合法的字元
           zList = "&'/""<>"           '指定"要再前置"
           '去掉前後空白,避免傳入NULL          
           strChk = trim(strChk & "")
           zErr = ""
           For i = 1 to Len(zList)
                      nPos = InStr(strChk, Mid(zList, i, 1))
                      if nPos <> 0 then zErr = zErr & " " & Mid(zList, i, 1)
           next
           if zErr<> "" then
                      zMsg = "『" & strChk & "』字串中含有不合法字元:" & zMsg
                      ChkChar = False
           end if
End Function

VBScript計算中英文混合字串的長度

用VBScript的Len函數,計算字串的長度,一個ASCII字元長度是1,但一個中文字的長度還是算1,自訂一個函數讓ASCII字元算1,中文字算2:

Function LenAB(strLen)
           dim i,n
           n=0
           for i = 1 to Len(strLen)
                     if asc(mid(strLen,i,1)) >=0 and asc(mid(strLen,i,1)) <= 255 then
                                n = n + 1
                     else
                                n = n + 2
                     end if
           next
           LenAB = n
End Function

VBScript修正NULL為空值或零

從資料庫讀取資料後,如果取得的欄位值是NULL,如果資料處理的過程,還是一直保持NULL,要回寫或處理時,就很可能發生錯誤,所以取得欄位值後,檢查一下是否為NULL?有時候是有必要的...

Function FixNull(varValue,varType)
           if isnull(varValue) = True then
                     if ucase(varType) = "STRING" then
                                FixNull = ""
                     elseif ucase(varType) = "NUMERIC" then
                                FixNull = 0
                     else
                                FixNull = ""
                     end if
           else
                     FixNull = varValue
           end if
End Function

2016-03-05

VBScript--中英文混合字元數的計算

在使用ASCII, Big5 ... 等編碼方式的環境下,可以使用以下簡單的函數功能,回傳指定字串的正確字元數。

Function LenC(strTXT)
           dim i,n
           n=0
           for i = 1 to len(strTXT)
                     if asc(mid(strTXT,i,1)) >=0 and asc(mid(strTXT,i,1)) <= 255 then
                                n = n + 1
                     else
                                n = n + 2
                     end if
           next
           LenC = n
End Function

2014-06-22

使用ADO物件連接資料庫,存取操作資料

  • ADO:ActiveX Data Objects,是一個用於存取資料來源的COM元件(是一個用於存取資料來源的COM(Component Object Model)元件),是程式語言和OLEDB間的一個中間層。使用ADO存取資料庫SQL的知識不是必要的,但仍可透過ADO的命令物件來執行SQL命令。
    參考:http://zh.wikipedia.org/wiki/ADO
     
  • OLEDB(Object Linking and Embedding, DataBase,物件連結嵌入資料庫):以統一方式存取不同類型的資料而設計的一種應用程式介面,是一組用元件物件模型(COM)實作的介面。除了支援SQL的資料庫,也能用在不支援SQL的物件資料庫,或試算表檔案(如Excel)。
    參考:http://zh.wikipedia.org/wiki/OLE_DB
     
  • ADO物件階層圖

  • ADO的Connection及RecordSet物件:建立資料庫連線→取得資料→操作資料
    • Connection物件:建立連接資料庫的物件。
      • 參考:http://www.w3school.com.cn/ado/ado_ref_connection.asp
      • 如何建立Connection?
        dim oConn As ADODB.Connection
        set oConn = Server.CreateObject("ADODB.connection")
      • 設定連線字串
        • zConn = "Driver={SQL Server};server=192.168.xx.xx;uid=UserID;pwd=xxx;database=DBname"  ← MS-SQL
        • zConn = "Provider=IBMDA400;data source=192.168.xx.xx;User Id=UserID;password=xxx;DEFAULT COLLECTION=SLLIB;"  ← AS/400
        • zConn = "Provider=Microsoft.Jet.OLEDB.3.51;Data Source=c:\DB\xxx.mdb"  ← Access
      • 開啟資料連結:
        oConn.open zConn
         
    • RecordSet物件:存放所取得資料的物件。
      • 參考:http://www.w3school.com.cn/ado/ado_ref_recordset.asp
      • 如何產生RecordSet?
        dim oRs As ADODB.RecordSet
        set oRs = Server.CreateObject("ADODB.recordset")
      •  用Open方法取得RecordSet的語法:
        RecordSet.Open source, ActiveConnection, CursorType, LockType, Options
        • source:可以是一串SQL命令。
        • CursorType:
          adOpenForwardOnly(0):只可向前移動的RecordSet(往末筆方向)(預設)
          adOpenKeyset(1):可以自由移動的RecordSet
          adOpenDynamic(2):可動態更新編輯的RecordSet
          adOpenStatic(3):可靜態更新編輯的RecordSet
        • LockType:
          adLockReadOnly(1):唯讀(預設)
          adLockPessimistic(2):悲觀鎖定,取得RecordSet後立即鎖定。
          adLockOptimistic(3):樂觀鎖定,只在進行更新時鎖定。
          adLockBatchOptimistic(4):批次樂觀鎖定,同時更新多筆資料時,暫不將資料更新到資料庫,先放在暫存區,執行UpdateBatch時,才將資料整批寫回資料庫。
        • 用Open取得RecordSet的範例:
          oRS.open zSQL, oConn, adOpenKeySet, adLockReadOnly
      • 用Execute方法取得RecordSet的語法:
        Set RecordSet = Connection.Execute[(CommandText,RecordAffected,Options)]
        CommandText:SQL命令
        RecordAffected: 為Long形態的變數,表示被此命令所影響的資料筆數
        Options:
        1-adCmdText SQL查詢文字
        2-adCmdTable 資料表
        4-adCmdStoredProc 預存函式
        8-adCmdUnknown 未定義;由Provider決定
        512-adCmdTableDirect 直接開啟的資料表(應避免使用在SQL Server資料庫上)
         
    •  操作所取得的資料(RecordSet)
      • 如果沒有取得任何資料,EOF及BOF的屬性值,都會是True。所以如果要確認已取得資料的情況下,才進行資料操作,可以這樣做:
        if not oRs.eof then
            '操作資料
            '資料操作後,如確定不再使用,可以將RecordSet清空
            oRs.close
            set oRs = nothing
        else
            'Recordset未取得任何資料
        end if
        '程式最後記得清空連線
        oConn.close
        set oConn = nothing
      • 如何移動資料指標所在位置?
        • oRs.MoveFirst
        • oRs.MovePrevious
        • oRs.MoveNext
        • oRs.MoveLast
      • 逐筆顯示資料一:
        While not oRS.eof
            response.write oRs("欄位名稱").value & ","
            response.write oRs(欄位順序).value & "<br />"
            oRs.MoveNext
        wend
      • 逐筆顯示資料二:
        do until oRs.EOF
           for each x in oRs.Fields
             Response.Write x.name  & "="
             Response.Write x.value & "<br />"
           next
           Response.Write "<br />"
           oRs.MoveNext
        loop
      • 使用GetRows取得RecordSet的資料:
        • GetRows的方法會將Recordset的資料放到指定的二維陣列中,第0維的個數是資料欄位數,第1維是資料筆數。
        • 語法:varArray = rs.GetRows([Rows], [Start], [Fields])
          Rows :表示要擷取的資料筆數。預設值為 adGetRowsRest (-1)。
          Start:讀取起點的BookMark;adBookmarkCurrent(0)(目前資料),adBookmarkFirst(1)(第1筆資料),adBookmarkLast(2)(最後資料)。
          Fields:可以用欄位名稱、索引等來指定要讀取的資料範圍。當欄位數大於1個時,可以用陣列表示。省略 Rows 參數或設定爲 adGetRowsRest(-1)時,GetRows 方法會讀取所有資料並讓Recordset的變成EOF狀態,而不會産生任何錯誤。
        • 範例:aDS = oRs.GetRows(, , Array("EmpCde", "EmpNam", "EmpTel"))
          資料的筆數是UBound(aDS,2)+1
          欄位數是UBound(aDS,1)+1
      •  使用GetString取得RecordSet的資料:
        • 語法:GetString([Format], [NumRows], [ColDelimiter], [RowDelimiter], [NullExpr])
          Format:預設adClipString(2)
          NumRows:要取得的列數,使用-1或省略,代表讀取所有剩下的記錄
          ColDelimiter:行的分隔字元,預設為Tab
          RowDelimiter:每筆資料間的分隔字元,預設為換行字元
          NullExpr:用來表示Null欄位的字串,預設為空字串
        •  範例:
          zString=oRs.GetString( , ,"</td><td>","</td></tr><tr><td>"," ")
      • 使用Find方法取得符合條件的RecordSet中的資料
        • 語法:RecordSet.Find criteria, SkipRows, SearchDirection, start
          criteria:搜尋條件的字串
          SkipRows:從開始位置起,要跳過的資料筆數,可省略
          SearchDirection:搜尋方向,可省略。adSearchForward往最後一筆方向,adSearchBackward往第一筆方向
          start:開始位置
        • 範例:
          oRs.Find = "欄位名稱='條件值'"
      • 新增、刪除、更新
        RecordSet.AddNew [Field],[value]
        RecordSet.Delete [Field],[value]
        RecordSet.Update [Field],[value]
      • 當LockType為adLockPressimistic或adLockOpimistic時,不允許兩個異動同時進行,可以用Supports方法預先檢查
        •  語法:boolean=RecordSet.Supports(CursorOptions)
          CursorOptions: adUpdate, adAddNew, adDelete, adMovePrevious, adBookMark
    • Field物件
      Recordset物件下有Fields物件集合,Fields由一或多個Field物件所組成。每個Field物件代表資料來源的一資料行。
      • 在RecordSet中取得或指定資料指標所在位置的某欄位資料,完整的語法是:
        RecordSet.Fields("欄位名稱").value = "欄位值"
      • 因為Fields是RecordSet的預設屬性,所以表達的語法可以是:
        RecordSet("欄位名稱").value = "欄位值"
      • 又因為value是Fields的預設屬性,所以表達的語法也可以是:
        RecordSet("欄位名稱") = "欄位值"
    • Fields集合物件
      如何計算Field的個數?RecordSet.Fields.Count
  • ADO元件,所提供的另一個存取資料作法
    • Command物件
      Command是使用上較靈活的物件,可以帶入參數,相當於資料庫的預存程序。但是用這種方法取得的RecordSet物件的LockType是adLockReadOnly...
      • 以下使用Command物件的範例:
        set oConn = Server.CreateObject("ADODB.connection")
        oConn.Provider = "Microsoft.Jet.OLEDB.4.0"
        oConn.open "c:/DBFiles/DBname.mdb"
        set oComm=Server.CreateObject("ADODB.command")
        oComm.ActiveConnection=oConn
        zSQL="Select * from PSEMPP  "
        oComm.CommandText=zSQL
        set oRs=ServerCreateObject("ADODB.RecordSet")
        set oRS = oComm.Execute
        ...
      • Execute是Command物件的重要方法,語法:
        Execute([RecordsAffected], [Parameters], [Options]) As Recordset
        RecordsAffected:Long型態的資料筆數
        Parameters:參數陣列
        Options:
        可以指定Command 物件的 CommandText 屬性。可以是一或多個 CommandTypeEnum 或 ExecuteOptionEnum 值。預設值是 adCmdUnspecified。
      • 參考:http://www.w3school.com.cn/ado/ado_ref_command.asp
    • Parameter物件
      雖然Command物件的Execute方法可以傳遞任意數量的參數,但Execute方法無法接收輸出的參數。如果要接收輸出的參數,可用CreateParameter方法來建立Parameter物件
      • 語法:CreateParameter([Name], [Type], [Direction], [Size], [Value]) As Parameter
        name:Parameter物件的名稱
        type:adEmpty, adSmallInt, adInteger, adDate, adChar, adVarChar ...
        Direction:代表輸入參數,輸出參數,或預存函數的回傳值
          0-adParamUnknown 不知名的方向
          1-adParamInput 輸入參數(預設值)
          2-adParamOutput 輸出參數
          3-adParamInputOutput 輸出入參數
          4-adParamReturnValue 預存函數的傳回值
    • Parameters物件集合
      範例:
      set oConn = Server.CreateObject("ADODB.connection")
      oConn.Provider = "Microsoft.Jet.OLEDB.4.0"
      oConn.open "c:/DBFiles/DBname.mdb"
      zSQL="Select * from PSEMPP where EMPCDE>? and EMPCDE<?  "
      set oComm=Server.CreateObject("ADODB.command")
      oComm.ActiveConnection=oConn
      oComm.CommandText=zSQL
      set param1=Server.Create("ADODB.Parameter")
      set param1=CreateParameter("pCDE1", adVarChar, adParamInput, 10)
      oComm.Parameters.Append param1
      set param2=Server.Create("ADODB.Parameter")
      set param2=CreateParameter("pCDE2", adVarChar, adParamInput, 10)
      oComm.Parameters.Append param2
      '取得參數值,並將指定到Parameter物件
      oComm.Parameters("pCDE1").value= "1000"
      oComm.Parameters("pCDE2").value= "2000"
      '取得查詢結果
      set oRs = Server.Create("ADODB.RecordSet")
      set oRS = oComm.Execute
        
  • 參考資料


2014-06-21

在VBScript環境下使用CDO.Message元件發送電子郵件

CDO元件:Collaboration Data Objects,對應的檔案是CDOSYS.dll,提供寄送電子郵件的功能。(從Windows Server 2000 / Windows XP起改為CDO元件,之前是CDONTS元件)

使用CDO元件建立電子郵件物件:
dim oMail
Set oMail=CreateObject("CDO.Message")

CDO元件常用的屬性及方法:
  • Subject:主旨
  • From:寄件人 
  • To:收件人,可以用分號(;)或逗號(,)串接多位收件人 
  • Cc:副本收件人,可以用分號(;)或逗號(,)串接多位收件人 
  • Bcc:密件副本收件人,可以用分號(;)或逗號(,)串接多位收件人 
  • TextBody:郵件內容為純文字格式 
  • HTMLBody:郵件內容為HTML格式 
  • CreateMHTMLBody:將本機或網路上的網頁,以HTML格式送出 
  • AddAttachmen:將指定的檔案,附加為郵件的附件 
  • Send:傳送郵件

範例:
Set oMail=CreateObject("CDO.Message")
oMail.Subject="使用CDO傳送電子郵件的範例" oMail.From= "件件人"
oMail.To="one@gmail.com;two@yahoo.com"
oMail.TextBody="郵件本文內容"
oMail.AddAttachment="c:\要附加的附件檔名"
oMail.Send
set oMail = nothing

2013-11-10

在Classic ASP中,使用正規表示式(Regular Express)檢查字串內容

正規表示式(Regular Express) 要是能熟練,對於字串的運算,必定是如虎添翼 ...

在Classic ASP下,使用正規表示式的主要步驟如下:

  1. 建立RegExp物件
    如果是在Client端執行:Set oRegExp = CreateObject("vbscript.RegExp")
    如果是在Server端執行:set oRegExp = New RegExp
  2. 使用Pattern,指定要檢測的條件
  3. 使用Test進行檢測,True符合條件,False不符合條件

<%
function isHex(sChk) 
    dim oRegExp
    set oRegExp = New RegExp 
    ''所有包含一個以上的abcdefABCDEF字母、0123456789數字的字串
    oRegExp.Pattern = "^[a-fA-F0-9]+$" 
    isHex = oRegExp.Test(sChk) 
    set oRegExp = nothing
end function

strChk= "HELLOa1b2C3D4E5F6G"
response.write strChk & "-" & IsHex(strChk) & "<br>"
n=len(strChk)
for i = 1 to n
    zChk = mid(strChk,i,1)
    response.write zChk & "-" & IsHex(zChk) & "<br>"
next
%>

執行結果:
HELLOa1b2C3D4E5F6G-False
H-False
E-True
L-False
L-False
O-False
a-True
1-True
b-True
2-True
C-True
3-True
D-True
4-True
E-True
5-True
F-True
6-True
G-False

正規表示式常用範例:

  1. 所有的正數:^[0-9]+$ 
  2. 所有的整數:^\-?[0-9]+$ 
  3. 所有的小數:^\-?[0-9]*\.?[0-9]*$ 
  4. 非負整數:^\d+$ 
  5. 正整數:^[0-9]*[1-9][0-9]*$ 
  6. 非正整數:^((-\d+)|(0+))$ 
  7. 負整數:^-[0-9]*[1-9][0-9]*$ 
  8. 整數:^-?\d+$  
  9. 非負浮點數:^\d+(\.\d+)?$ 
  10. 正浮點數:^((0-9)+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0- 9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$ 
  11. 非正浮點數:^((-\d+\.\d+)?)|(0+(\.0+)?))$ 
  12. 負浮點數:^(-((正浮點數正規式)))$
  13. 英文字符串:^[A-Za-z]+$ 
  14. 英文大寫串:^[A-Z]+$ 
  15. 英文小寫串:^[a-z]+$ 
  16. 除了小寫字母以外的所有字串:[^a-z]
  17. 英文字符數字串:^[A-Za-z0-9]+$ 
  18. 由一個小寫字母和一位數字組成的字串:^[a-z][0-9]$

參考資料:http://zh.wikipedia.org/wiki/正規表示式

2013-10-13

如何用ASP(vbscript)檢查所輸入的中文字,是否包含沒有Big5編碼的其他中文字?

先來看一下,以下的這個範例及執行後輸出的內容:


上述程式碼輸出的內容如下:
他=-23220
是=-21425
游=-19227
錫=-16388
?=63
嗎=-18724
?=63
還=-15911
是=-21425
王=-23299
建=-21544
?=63
啊=-20262
!=33

堃、煊是沒有Big5對應編碼的中文字,所以在Big5編碼的網頁下,會出現?(問號),ASCII的編碼是63,範例中也使用了?(問號),ASCII的編碼當然也是63,所以這裡給判斷輸入在頁面上的文字內容是否沒有Big5對應編碼的中文字,下了個規則:如果原輸入中文單字不是?(問號),但輸出結果的ASCII值等於63,這個中文單字就是沒有Big5編碼對應的其他中文字 ...
範例程式碼如下:
function CheckUnicode(strContent)
        dim intErr        //偵錯記號,0表示正常,1表示存在Big5以外的中文字
        intErr = 0
   
        For i=1 To len(strContent)
                If asc(mid(strContent,i,1))=63 And (mid(strContent,i,1)<>"?") Then
                        intErr = 1
            exit for
                end If
        Next
        if intErr = 1 then
                'CheckUnicode = "第" & i & "個字【" & mid(strContent,i,1) & "】:是Big5以外的中文字, 請調整!!" & vbCrlf
        else
                CheckUnicode = ""
        end if
end function

2013-05-12

VBScript--檢查輸入的民國年制日期字串是否正確?


  1. 假設輸入的民國年制日期,使一個七碼的字串,年三碼月兩碼日兩碼(YYYMMDD)。document.all("InputDate").value
  2. 使用以下的程序來檢查,是否為正確的日期格式?
zDate = document.all("InputDate").value
sub CheckChineseDate()
    if isNumeric(zDate) and instr(1,zDate,".")=0 then
         zDateA = CStr(CDBL(zDate) + 19110000)
         zDateB = mid(zDateA,1,4) & "/" & mid(zDateA,5,2) & "/" & mid(zDateA,7,2)
        if isDate(zDateB) then 
            msgbox "輸入的資料,符合日期格式"
        else
            msgbox "輸入的資料,不符合日期格式"
        end if
    else
        msgbox "輸入的資料,不符合日期格式"
end sub

VBScript--如何判斷輸入的內容是否為整數?


  1. 假設輸入的資料在:document.all("InputField").value
  2. 建立一個檢查InputField是否為整數的程序
sub CheckInteger()
    if isNumeric(document.all("InputField").value) and instr(1,document.all("InputField").value,".")=0 then
        msgbox "輸入的資料是整數型態的資料"    
    else
        msgbox "輸入的資料不是整數型態的資料"
    end if
end sub

2012-08-26

在client端以vbscript查詢資料庫並傳回結果

參考資料:如何使用 XMLHTTP 或 ServerXMLHTTP 物件送出表單資料

將以下程式碼放在要client端的程式內

<%@ Language=vbScript%>
<%
  DataToSend = "id=1"
  dim xmlhttp 
  set xmlhttp = server.Createobject("MSXML2.ServerXMLHTTP")
  xmlhttp.Open "POST","http://localhost/Receiver.asp",false
  xmlhttp.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
  xmlhttp.send DataToSend
  Response.ContentType = "text/xml"
  Response.Write xmlhttp.responsexml.xml
  Set xmlhttp = nothing
%>

  1. 建立xmlhttp
  2. 以xmlhttp.Open指定要查詢的程式
    (http://localhost/Receiver.asp為查詢資料庫的程式)
  3. 以xmlhttp.send送出要查詢的資料
  4. 以Response.ContentType指定回傳資料的形態
  5. 以xmlhttp.responseXML.xml取得查詢得結果
    (或設一變數,將回傳值接收下來rtnValue = xmlhttp.ResponseText )
  6. client端接收取得資料後,可以用 set xmlhttp = nothing 清空 xmlhttp

2012-07-29

VBScript函數--字元字串處理--StrReverse反轉字元重排字串

StrReverse → 反轉字元重排字串
語法:StrReverse(string)

函數字串執行函數寫法結果訊息
StrReverse
(如無法正常測試,建議使用IE瀏覽器)

<script language="vbscript">
  <!--
    sub run_StrReverse()
            document.all("StrReverse2").innerHTML = "StrReverse(" & chr(34) & document.all("StrReverse1").value & chr(34) & ")"
            document.all("StrReverse3").value = StrReverse(document.all("StrReverse1").value)
            document.all("lblStrReverse").innerHTML = "已反轉!"
    end sub
  -->
</script>
<br />
<table>
<tbody>
<tr>
    <td>函數</td><td>字串</td><td>執行</td><td>函數寫法</td><td>結果</td><td>訊息</td>
</tr>
<tr>
    <td>StrReverse</td>
    <td><input id="StrReverse1" name="StrReverse1" type="text" style="width:100px"/></td>
    <td><input id="btnStrReverse" name="btnStrReverse" onclick="run_StrReverse()" type="button" value="Run" /></td>
    <td><label id="StrReverse2" name="StrReverse2"></label></td>
    <td><input id="StrReverse3" name="StrReverse3" type="text" style="width:100px" readonly/></td>
    <td><label id="lblStrReverse" name="lblStrReverse"></label></td>
</tr>
</tbody> 
</table>

2012-07-22

VBScript函數--字元字串處理--String傳回指定字元重複指定次數所組成的字串

String → 傳回指定字元重複指定次數所組成的字串
語法:String(count,char)

  • count:要重複的次數
  • char:指定要重複的字元

函數長度字元執行函數寫法結果訊息
String
(如無法正常測試,建議使用IE瀏覽器)
<script language="vbscript">
  <!--
    sub run_String()
        document.all("lblString").innerHTML = ""
        document.all("String3").innerHTML = ""
        document.all("String4").innerHTML = ""
        if not isNumeric(document.all("String1").value)  then
            document.all("lblString").innerHTML = "請輸入正整數"
            document.all("String1").value = ""
            document.all("String1").focus
            exit sub
        end if
            document.all("String3").innerHTML = "String("  & trim(document.all("String1").value) & ","& chr(34) & document.all("String2").value & chr(34) & ")"
            document.all("String4").innerHTML = String(CInt(trim(document.all("String1").value)),document.all("String2").value)
            document.all("lblString").innerHTML = "字串已輸出!"
    end sub
  -->
</script>
<br />
<table>
<tbody>
<tr>
    <td>函數</td><td>長度</td><td>字元</td><td>執行</td><td>函數寫法</td><td>結果</td><td>訊息</td>
</tr>
<tr>
    <td>String</td>
    <td><input id="String1" name="String1" type="text" maxlength=1 style="width:20px"/></td>
    <td><input id="String2" name="String2" type="text" maxlength=2 style="width:20px"/></td>
    <td><input id="btnString" name="btnString" onclick="run_String()" type="button" value="Run" /></td>
    <td><label id="String3" name="String3"></label></td>
    <td><label id="String4" name="String4"></label></td>
    <td><label id="lblString" name="lblString"></label></td>
</tr>
</tbody> 
</table>

2012-07-14

VBScript函數--字元字串處理--Space傳回指定長度空白字元所組成的空白字串

Space → 傳回指定長度空白字元所組成的空白字串
語法:Space(length)


函數長度執行函數寫法結果訊息
Space
(如無法正常測試,建議使用IE瀏覽器)
<script language="vbscript">
  <!--
    sub run_Space()
        document.all("lblSpace").innerHTML = ""
        document.all("Space3").innerHTML = ""
        if not isNumeric(document.all("Space1").value)  then
            document.all("lblSpace").innerHTML = "請輸入正整數"
            document.all("Space3").innerHTML = ""
            document.all("Space2").innerHTML = ""
            document.all("Space1").value = ""
            document.all("Space1").focus
            exit sub
        end if
            document.all("Space2").innerHTML = "Space(" & chr(34) & document.all("Space1").value & chr(34) & ")"
            document.all("Space3").innerHTML = Replace(Space(document.all("Space1").value)," ",".")
            document.all("lblSpace").innerHTML = "用1點代表1空白字元!"
    end sub
  -->
</script>
<br />
<table>
<tbody>
<tr>
    <td>函數</td><td>長度</td><td>執行</td><td>函數寫法</td><td>結果</td><td>訊息</td>
</tr>
<tr>
    <td>Space</td>
    <td><input id="Space1" name="Space1" type="text" maxlength=2 style="width:20px"/></td>
    <td><input id="btnSpace" name="btnSpace" onclick="run_Space()" type="button" value="Run" /></td>
    <td><label id="Space2" name="Space2"></label></td>
    <td><span id="Space3" name="Space3" style="background-color:#FF0000;"></span></td>
    <td><label id="lblSpace" name="lblSpace"></label></td>
</tr>
</tbody> 
</table>

VBScript函數--字元字串處理--Trim刪除字串左右兩側的前置後置空白字元

Trim → 刪除字串左右兩側的前置後置空白字元
語法:Trim(string)


函數字串執行函數寫法結果訊息
Trim
(如無法正常測試,建議使用IE瀏覽器)

<script language="vbscript">
  <!--
    sub run_Trim()
            document.all("Trim2").innerHTML = "Trim(" & chr(34) & document.all("Trim1").value & chr(34) & ")"
            document.all("Trim3").value = Trim(document.all("Trim1").value)
            document.all("lblTrim").innerHTML = "已移除!"
    end sub
  -->
</script>
<br />
<table>
<tbody>
<tr>
    <td>函數</td><td>字串</td><td>執行</td><td>函數寫法</td><td>結果</td><td>訊息</td>
</tr>
<tr>
    <td>Trim</td>
    <td><input id="Trim1" name="Trim1" type="text" style="width:100px"/></td>
    <td><input id="btnTrim" name="btnTrim" onclick="run_Trim()" type="button" value="Run" /></td>
    <td><label id="Trim2" name="Trim2"></label></td>
    <td><input id="Trim3" name="Trim3" type="text" style="width:100px" readonly/></td>
    <td><label id="lblTrim" name="lblTrim"></label></td>
</tr>
</tbody> 
</table>

VBScript函數--字元字串處理--RTrim刪除字串右側的後置空白字元

RTrim → 刪除字串右側的後置空白字元
語法:RTrim(string)


函數字串執行函數寫法結果訊息
RTrim
(如無法正常測試,建議使用IE瀏覽器)
<script language="vbscript">
  <!--
    sub run_RTrim()
            document.all("RTrim2").innerHTML = "RTrim(" & chr(34) & document.all("RTrim1").value & chr(34) & ")"
            document.all("RTrim3").value = RTrim(document.all("RTrim1").value)
            document.all("lblRTrim").innerHTML = "已移除!"
    end sub
  -->
</script>
<br />
<table>
<tbody>
<tr>
    <td>函數</td><td>字串</td><td>執行</td><td>函數寫法</td><td>結果</td><td>訊息</td>
</tr>
<tr>
    <td>RTrim</td>
    <td><input id="RTrim1" name="RTrim1" type="text" style="width:100px"/></td>
    <td><input id="btnRTrim" name="btnRTrim" onclick="run_RTrim()" type="button" value="Run" /></td>
    <td><label id="RTrim2" name="RTrim2"></label></td>
    <td><input id="RTrim3" name="RTrim3" type="text" style="width:100px" readonly/></td>
    <td><label id="lblRTrim" name="lblRTrim"></label></td>
</tr>
</tbody> 
</table>

VBScript函數--字元字串處理--LTrim刪除字串左側的前置空白字元

LTrim → 刪除字串左側的前置空白字元
語法:LTrim(string)


函數字串執行函數寫法結果訊息
LTrim
(如無法正常測試,建議使用IE瀏覽器)
<script language="vbscript">
  <!--
    sub run_LTrim()
            document.all("LTrim2").innerHTML = "LTrim(" & chr(34) & document.all("LTrim1").value & chr(34) & ")"
            document.all("LTrim3").value = LTrim(document.all("LTrim1").value)
            document.all("lblLTrim").innerHTML = "已移除!"
    end sub
  -->
</script>
<br />
<table>
<tbody>
<tr>
    <td>函數</td><td>字串</td><td>執行</td><td>函數寫法</td><td>結果</td><td>訊息</td>
</tr>
<tr>
    <td>LTrim</td>
    <td><input id="LTrim1" name="LTrim1" type="text" style="width:100px"/></td>
    <td><input id="btnLTrim" name="btnLTrim" onclick="run_LTrim()" type="button" value="Run" /></td>
    <td><label id="LTrim2" name="LTrim2"></label></td>
    <td><input id="LTrim3" name="LTrim3" type="text" style="width:100px" readonly/></td>
    <td><label id="lblLTrim" name="lblLTrim"></label></td>
</tr>
</tbody> 
</table>

VBScript函數--字元字串處理--Replace字串取代

Replace → 字串取代
語法:Replace(string1,string2,string3[,start[,count[,compare]]])
以string3取代string1中符合string2的字串內容。

  1. string1 :一定要輸入。被搜尋取代的目標。
  2. string2 :一定要輸入。此字串如在string1中被找到,將是被取代的對象。
  3. srting3 :一定要輸入。取代string2成為string1中的一部份。
  4. start :在string1中搜尋string2的起始字元位置。預設值是1,可不輸入。
  5. count :取代符合搜尋條件的次數。預設值是 -1 ,取代所有符合搜尋的內容。可不輸入。
  6. compare :可不輸入,比對的方式,預設為0(=vbBinaryCompare,二進位比對),另一個比對方式 1(=vbTextCompare,文字比對)。

函數字串被取代取代成執行函數寫法結果訊息
ReplaceHannibalnmReplace("Hannibal","n","m")Hammibal
Replace
(如無法正常測試,建議使用IE瀏覽器)
<script language="vbscript">
  <!--
    sub run_Replace()
        document.all("lblReplace").innerHTML = ""
        document.all("Replace4").innerHTML = "Replace(" & chr(34) & document.all("Replace1").value & chr(34) &_
        ","  & chr(34) & document.all("Replace2").value  & chr(34) & ","  & chr(34) & document.all("Replace3").value  & chr(34) & ")"
        document.all("Replace5").value = Replace(document.all("Replace1").value,document.all("Replace2").value,document.all("Replace3").value)
        document.all("lblReplace").innerHTML = "已執行取代!"
    end sub
  -->
</script>
<br />
<table>
<tbody>
<tr>
    <td>函數</td><td>字串</td><td>被取代</td><td>取代成</td><td>執行</td><td>函數寫法</td><td>結果</td><td>訊息</td>
</tr>
<tr>
    <td>Replace</td>
    <td><input id="Replace1" name="Replace1" type="text" style="width:80px"/></td>
    <td><input id="Replace2" name="Replace2" type="text" style="width:25px"/></td>
    <td><input id="Replace3" name="Replace3" type="text" style="width:25px"/></td>
    <td><input id="btnReplace" name="btnReplace" onclick="run_Replace()" type="button" value="Run" /></td>
    <td><label id="Replace4" name="Replace4"></label></td>
    <td><input id="Replace5" name="Replace5" type="text" style="width:80px" readonly/></td>
    <td><label id="lblReplace" name="lblReplace"></label></td>
</tr>
</tbody> 
</table>