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

原创 2004年07月07日 13:34:00

  用过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

实现

完整代码:
'=================================================================
'DESIGN BY :  彭国辉
'SITE:       
http://kacarton.yeah.net/
'BLOG:        http://blog.csdn.net/nhconch
'EMAIL:       kacarton@sohu.com

'文章为作者原创,转载前请先与本人联系,转载请注明文章出处、保留作者信息,谢谢支持!
'=================================================================


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)还允许对字符串值进行四则运算。

 

[asp]asp function 设置全局变量|function变量共享

使用dim定义实现全局变量,如做分页的时候 在最顶部设置 dim rc function rs_news() rc="asdf" end function function write_fun()  ...
  • luo2635505
  • luo2635505
  • 2015年04月13日 15:38
  • 643

ASP For循环

for 循环变量=初值to终点值……next
  • liukidd
  • liukidd
  • 2006年06月17日 23:59
  • 690

关于变量在for循环内外定义的思考

关于变量在for循环内外定义的思考 在c#或java里面,我们通常会这样写for循环: for(int i = 0;i10;i++) { Console.Wr...
  • huahua000111
  • huahua000111
  • 2017年04月13日 14:58
  • 693

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

用过PHP的朋友都知道,PHP中变量的使用灵活方便,特别是能在字符串中方便实现变量名-值变换,使得整个PHP代码更显简洁优美。比如一条更新数据库的SQL语句只需写成:"update users set...
  • u014739775
  • u014739775
  • 2014年05月10日 10:37
  • 654

变量名与变量值

研一时,很偶然的翻开谭浩强老先生的《C程序设计》(是师姐的书,俺的老早就卖了,估计当时觉得这本书写得不够好),很偶然的看到关于变量名的一段话:“变量名实际上是一个符号地址,在对程序编译连接时由系统给每...
  • comonjie
  • comonjie
  • 2010年11月13日 22:06
  • 1628

asp.net使用for循环实现Datalist的分列显示功能

服务器控件虽然用起来方便,但是也牺牲了性能,有些时候用起来显得大而无当。希望先进朋友多多指教。 复制代码 代码如下: /// /// 工程业绩--用for循环代替了DataList多列显...
  • judyge
  • judyge
  • 2016年03月14日 17:52
  • 477

应用ASP技术编写一个简单论坛(中)

4.2消息按主题和层次显示和处理本论坛中的消息按主题显示,如图1,左框架中消息列在所属主题后。由于每个消息的内容都存在数据库中相应的主题消息表中,所以消息按主题显示易于实现。在一个特定主题消息表中,消...
  • sanife
  • sanife
  • 2007年08月22日 17:02
  • 1041

K-L变换实现图像压缩

卡洛南-洛伊(karhunen-Loeve)变换,简称K-L变换,也叫霍特林变换或者主成分分析。必备数学知识:协方差,相关系数,协方差矩阵(这三个知识点我是参考的同济大学的概率论数与数理统计那本书,讲...
  • silence2015
  • silence2015
  • 2017年04月19日 12:23
  • 1684

asp如何实现图片的动态翻动的效果

 http://community.csdn.net/Expert/topic/3722/3722373.xml?temp=.6881372rs.open "select top 3 * from t...
  • windok2004
  • windok2004
  • 2005年10月26日 23:55
  • 897

求助一个 asp 循环输出

电视1电视  电视1 90 立刻订购查看详情 这个  第三个商品后加上这个  应该怎以写!求大神帮我一下  谢谢...
  • congjixiao9823
  • congjixiao9823
  • 2017年01月08日 18:02
  • 162
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:ASP中轻松实现变量名-值变换
举报原因:
原因补充:

(最多只允许输入30个字)