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

变量

用过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 = "\{([\w\s]+)\}" '除换行符外的所有字符有效
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

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

时间: 2024-08-31 01:30:28

ASP中轻松实现变量名-值变换的相关文章

ASP中使用Session变量的优缺点(转)

session|变量 ASP中使用Session变量的优缺点 (作者:青苹果电脑工作室) 许多人利用Session变量来开发ASP(Active Server Pages).这些变量与任何编程语言中通用的变量非常相似,并且具有和通用变量一样的优点和缺陷.任何命令都需要运行时间和存储空间(甚至GOTO's语句如此),Session变量同样需要自己的运行时间和存储空间.过多地使用Session变量就会导致无法代码冗余,并且使服务器运行成本提高下面是我个人使用Session变量的一些主要观点和心得体会

ai-求OC中自动生成变量名的方法

问题描述 求OC中自动生成变量名的方法 如题 求大神指导.比如 char * a1="aaaaaaaa"; char * a2="bbbbbbb"; char * a3="ccccccccc"; ............ char * an="nnnnnnn"; 变量命名规则都是char * an n值是从1到n的数字,n我知道. 问题:如何依次遍历a1到an 想要类似如下的用法 for(int i=0;i<n;i++)

c语言-C语言中两个变量的值互换问题

问题描述 C语言中两个变量的值互换问题 两个变量的值互换为什么不能直接用 a=b;b=a;来实现. 解决方案 如gcwlwl7所说的 a=1 ,b=2 要变成a=2 b=1的话 用所列举的两个等式为 先a=b=2,此时a已经变成2了, 再b=a=2,b仍然等于2(a在上面已经变成2了.所以b=a即是b=2) 不过有种方法: a=1; b=2; a=a+b=3; (1+2) b=a-b=1; (3-2) a=a-b=2; (3-1) 即最后就得到 a=2;b=1啦 这个是不要用到中间变量的方法 希

ASP中使用Session变量的优缺点

session|变量 许多人利用Session变量来开发ASP(Active Server Pages).这些变量与任何编程语言中通用的变量非常相似,并且具有和通用变量一样的优点和缺陷.任何命令都需要运行时间和存储空间(甚至GOTO's语句如此),Session变量同样需要自己的运行时间和存储空间.过多地使用Session变量就会导致无法代码冗余,并且使服务器运行成本提高下面是我个人使用Session变量的一些主要观点和心得体会. 优点 如果要在诸多Web页间传递一个变量,那么用Session变

ASP中常用的变量命名规则

  ASP中,常用的变量命名规则 在ASP编程中,如果你遵守了下面的变量命名规则,你的代码的可行性.可维护性将会更好: 一般命名规则 前缀 变量类型 例子 b or bln Boolean bSuccess c or cur Currency cAmount d or dbl Double dblQuantity dt or dat Date and Time dtDate f or flt Float fRatio l or lng Long lMilliseconds i or int In

ASP中轻松实现记录集分页

分页|记录集|分页|记录集     大家都知道在Dreamwerver中可以很方便地实现记录集的分页显示,但是生成的代码的确很庞大,影响了网页的显示速度,看起来条理也不是很清晰,那么,可不可以用简单的方式实现同样的功能呢?当然可以,笔者通过以下一些简单的代码就实现了记录集的分页显示,现在拿出来大家一起分享. 主要代码如下: <% If rs1.recordcount>0 Then ' 记录集不为空则处理记录 rs1.pagesize = 10 ' 设置每页显示的记录数 num=rs1.reco

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

大家都知道在Dreamwerver中可以很方便地实现记录集的分页显示,但是生成的代码的确很庞大,影响了网页的显示速度,看起来条理也不是很清晰,那么,可不可以用简单的方式实现同样的功能呢?当然可以,笔者通过以下一些简单的代码就实现了记录集的分页显示,现在拿出来大家一起分享. 主要代码如下: <% If rs1.recordcount>0 Then ' 记录集不为空则处理记录 rs1.pagesize = 10 ' 设置每页显示的记录数 num=rs1.recordcount ' 记录总数 pag

浅谈ASP中Web页面间的数据传递

web|数据|页面 基于Web的动态网页设计必会涉及到页面间的数据传递,文章探讨了ASP设计中常用的Web页面间的数据传递方式,分析各种数据传递方式的使用方法.使用场合及优缺点,其都是设计阶段选择数据传递方式考虑的关键.往往使用动态网页技术制作ASP应用程序时一般至少拥有二个或二个以上的Web页面,这时就得考虑在多个Web页面间传递数据的处理工作.而ASP应用程序的各个页面类似于Windows应用程序的form窗体,Windows应用程序各form间数据传递可以通过定义全局变量等方法来实现.网页

ASP中Web页面间的数据传递方式

摘要:基于web的动态网页设计必会涉及到页面间的数据传递,文章探讨了asp设计中常用的web页面间的数据传递方式,分析各种数据传递方式的使用方法.使用场合及优缺点,其都是设计阶段选择数据传递方式考虑的关键. 关键词 数据传递变量浏览器端网页 往往使用动态网页技术制作asp应用程序时一般至少拥有二个或二个以上的web页面,这时就得考虑在多个web页面间传递数据的处理工作.而asp应用程序的各个页面类似于windows应用程序的form窗体,windows应用程序各form间数据传递可以通过定义全局