《拓文asp.net网站内容管理系统》官方演示站。
 设为首页  
 收藏本站
 作者:黄振安
 QQ:53854651
首 页 开源拓文.NET编程网站编程网页设计图形图像数据库软件工程留言本
    站内搜索:  
您现在的位置: 拓文网络 → 网站编程 → ASP → ASP中轻松实现变量名-值变换[正文]

热 门 文 章

相 关 文 章
  • ASP.NET性能优化
  • ASP脚本循环语句
  • 在.NET框架应用程序中发送电子邮件
  • .net打包自动安装数据库
  • asp.net开发wap必备:更好的匹配手机设备
  • 用ashx动态生成文件
  • windows 2003下asp.Net站点无法使用用户名+密码的方
  • ASP.NET中17种正则表达式
  • 提高ASP.Net应用程序性能的十大方法
  • 一个通过web.Mail发送邮件的类
  • ASP中轻松实现变量名-值变换
     
    [作者:不详    转贴自:不详    点击数:    更新时间:2006-3-14 9:15:31]

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


    首页 | 1 | 尾页  共 1 页
     
    hch004 打印本页 关闭窗口

         文 章 评 论
    评论人 查看该文章的评论 发表时间
       笔 名* : 0 50分 60分 70分 80分 90分 100分
    评论内容 *: (最多1000字。当前字数:0)


    没有相关评论,欢迎您参与!

    - 关于本站 - 网站帮助 - 下载声明 - 友情连接 - 网站地图 -
    Copyright © 2005-2006 myTopWin.Com. All Rights Reserved . [桂ICP备06004496号]