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.net中如何利用反射获取动态变量名称

网上载的,简单使用。 反射获取dbConn类中的方法 public static SqlConnection GetConnection(string id)//创建连接,由参数决定调用哪个连接字...
  • fox123871
  • fox123871
  • 2011-08-10 11:05:51
  • 1388

变量的属性(全局变量、局部变量、动态变量、静态变量等)

 变量的属性 1、变量的分类l         根据作用域:可分为全局变量和局部变量。l           根据生存周期:可分为静态存储方式和动态存储方式,具体地又分为自动的(auto)、静态的(s...
  • 21aspnet
  • 21aspnet
  • 2008-06-18 10:00:00
  • 16502

ASP.NET Razor - C# 变量

ASP.NET Razor - C# 变量 变量是用来存储数据的命名实体。 变量 变量是用来存储数据的。 一个变量的名称必须以字母字符开头,并且不能包含空格或者保留字符...
  • MR_XuZhe
  • MR_XuZhe
  • 2017-11-20 08:32:39
  • 234

matlab中利用eval和num2str实现struct变量名的递增

s = struct('strings',{{'hello','yes'}},'lengths',[5 3]) for n = 1:N eval(['EEG_',num2str(n),'='...
  • u012361378
  • u012361378
  • 2017-08-02 11:18:43
  • 279

asp.net里的变量命名规则

变量名的长短应该只对编译器来说的,最终运行的时候都是内存地址了~ 应该不会影响性能,所以在编写程序的时候尽量要把变量命名的简捷易懂;变量名的命名规则其实就是为了帮助理解,便于后期的维护。不要贪图写代码...
  • lxl743p
  • lxl743p
  • 2008-05-29 15:04:00
  • 283

ASP.NET Razor(三) - C# 变量

Razor 语法Razor C# 循环变量是用于存储数据的命名实体。变量变量用于存储数据。变量名必须以字母字符开头,不能包含空格和保留字符。变量可以是某个具体的类型,指示其所存储的数据类型。字符串变量...
  • weixin_38289699
  • weixin_38289699
  • 2018-03-16 13:28:40
  • 15

asp.net资料

 使用SqlBulkCopy类加载其他源数据到SQL表 在数据回发时,维护ASP.NET Tree控件的位置 vagerent的vs2005网站开发技巧 ASP.NET2.0小技巧--内部控件权限的实...
  • whchen
  • whchen
  • 2007-03-06 09:40:00
  • 5003

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

  • 2008年06月29日 09:28
  • 3KB
  • 下载

PHP中,将变量值作为变量名

可变变量 有时候使用可变变量名是很方便的。就是说,一个变量的变量名可以动态的设置和使用。一个普通的变量通过声明来设置,例如: 一个可变变量获取了一个普通变量的值作为这个可变变量的变量名。...
  • u011447828
  • u011447828
  • 2015-07-07 11:50:05
  • 1325

ASP.NET Razor &#8211; C# 变量

变量是用于存储数据的命名实体。 变量 变量用于存储数据。 变量名必须以字母字符开头,不能包含空格和保留字符。 变量可以是某个具体的类型,指示其所存储的数据类型。字符串变量存储字符串值 (“...
  • airfish20000
  • airfish20000
  • 2017-08-02 13:22:50
  • 116
收藏助手
不良信息举报
您举报文章:ASP中轻松实现变量名-值变换
举报原因:
原因补充:

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