熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> .NET編程 >> 正文

ASP中輕松實現變量名-值變換

2013-11-13 10:38:24  來源: .NET編程 

  用過PHP的朋友都知道PHP中變量的使用靈活方便特別是能在字符串中方便實現變量名-值變換使得整個PHP代碼更顯簡潔優美比如一條更新數據庫的SQL語句只需寫成"update users set password=$password group=$group name=$username where account=$account"其中的$password$group$username$account便會被實際的變量值替換而在ASP中要實現相同的功能必須寫成"update useres set password=" & password & "group=" & group & "name=" & username & " where account=" & account & ""顯得冗長難看如果這是一條insert語言而且插入的字段內容很多的話那麼查看字段與values的對應關系將會是一個痛苦的過程

  現在讓我們看看如何在ASP實現類似的變量名-值變換

  思路

  首先必須有一個方法把需要用實際值替換的變量名與普通的文本區分出來然後把所有找到的變量名用它所代表的實際值替換掉

  對於第一點可以通過正則表達式查找得到這裡我們不采用PHP的變量表示方式而采用大托號{}作為變量名的邊界符字符串表示變為password={password}group={group}

  第二點是變量名-值變換的關鍵通過變量名得到變量值查看ASP資料沒有找到直接實現的方法但有一個函數Execute引起我們的注意從資料說明中可知Execute可以執行傳入的有效的字符串作為代碼執行同這樣只要編寫一個小函數就可以實現我們的要示核心代碼為

  function GetVar(var_name)
    Execute("function get_value(): get_value=" & var_name  & ": end function")
    getvar=get_value()
end function

  實現

  完整代碼

  function GetVar(var_name)
    Execute("function get_value(): get_value=" & var_name  & ": end function")
    getvar=get_value()
end function

  function TxtValue(str level)
    dim regEx Matches Result
    Set regEx = new RegExp
    select case level
        case regExPattern = "{(w+)}"              變量名有效
        case regExPattern = "{([w+*/<>=]+)}" 變量名及運算符有效
        case regExPattern = "{([ws]+)}"   除換行符外的所有字符有效
        case else exit function
    end select
    regExPattern = "{(w+)}"
    regExIgnoreCase = true
    regExGlobal = true
    Set Matches = regExExecute(str)
    Result = str
    responsewrite MatchesCount
    For Each Match In Matches
        Result = Replace(Result MatchValue GetVar(MatchSubMatches()))
    Next
    set Matches = nothing
    set regEx = nothing
    TxtValue = Result
end function

  function VarValue(var_name)
    VarValue = TxtValue(var_name )
end Function

  調用方法

  VarValue("update users set password={password} group={group} name={username} where account={account}"

  VarValue調用了TxtValueTxtValue找出所有變量名交調用GetVar得到變量值並進行替換實際上直接調用TxtValue(str)還允許對字符串值進行四則運算
 


From:http://tw.wingwit.com/Article/program/net/201311/14190.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.