ASP中轻松实现变量名-值变换

小·皓·

小·皓·

2016-01-29 18:42

ASP中轻松实现变量名-值变换,ASP中轻松实现变量名-值变换
 

nhconch [原作]

  用过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 Txt2Value(str, level)
    dim regEx, Matches, Result
    Set regEx = new RegExp
    select case level
        case 0 regEx.Pattern = "{(w+)}"              '变量名有效
        case 1 regEx.Pattern = "{([w+-*/\<=]+)}" '变量名及运算符有效
        'case 2 regEx.Pattern = "{([ws]+)}"   '除换行符外的所有字符有效
        case else exit function
    end select
    'regEx.Pattern = "{(w+)}"
    regEx.IgnoreCase = true
    regEx.Global = true
    Set Matches = regEx.Execute(str)
    Result = str
    'response.write Matches.Count
    For Each Match In Matches
        Result = Replace(Result, Match.Value, GetVar(Match.SubMatches(0)))
    Next
    set Matches = nothing
    set regEx = nothing
    Txt2Value = Result
end function

function Var2Value(var_name)
    Var2Value = Txt2Value(var_name, 0)
end Function

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/asp/)

调用方法:
Var2Value("update users set password='{password}', group={group}, name='{username}' where account='{account}'"
  Var2Value调用了Txt2Value,Txt2Value找出所有变量名交调用GetVar得到变量值并进行替换。实际上直接调用Txt2Value(str,1)还允许对字符串值进行四则运算。

 

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/asp/) 
展开更多 50%)
分享

猜你喜欢

ASP中轻松实现变量名-值变换

ASP
ASP中轻松实现变量名-值变换

如何在ASP.Net中取得环境变量的值

ASP
如何在ASP.Net中取得环境变量的值

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

变量名称变成了保留字

编程语言 网络编程
变量名称变成了保留字

在ASP中轻松实现记录集分页显示

ASP
在ASP中轻松实现记录集分页显示

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

XP中实现文件名批量修改

windows 操作系统
XP中实现文件名批量修改

javascript实现的动态文字变换

Web开发
javascript实现的动态文字变换

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

用通ASP直接获取用户真实IP地址

用通ASP直接获取用户真实IP地址

Excel 2002制作自动记录的单位考勤表

Excel 2002制作自动记录的单位考勤表
下拉加载更多内容 ↓