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

  次阅读 作者:智能小宝 来源:互联网 2016-03-01 13:07 我要评论(0)

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

调用方法:

Var2Value("update users set password='{password}', group={group}, name='{username}' where account='{account}'"

Var2Value调用了Txt2Value,Txt2Value找出所有变量名交调用GetVar得到变量值并进行替换。实际上直接调用Txt2Value(str,1)还允许对字符串值进行四则运算

本站文章信息来源于网络以及网友投稿,本站只负责对文章进行整理、排版、编辑,是出于传递更多信息之目的,并不意味着赞同其观点或证实其内容的真实性。如果您有什么意见或建议,请联系QQ28-1688-302!

人工智能实验室
相关文章相关文章
  • 无人驾驶汽车如何改变城市生活?听听他们怎么说

    无人驾驶汽车如何改变城市生活?听听他们怎么说

  • 韩春雨称已能重复实验结果 近期将有消息公布

    韩春雨称已能重复实验结果 近期将有消息公布

  • 未来两年人工智能要怎么走?看这篇就够了

    未来两年人工智能要怎么走?看这篇就够了

  • 英国研发“杀生”机器人 通过生命体获取能量

    英国研发“杀生”机器人 通过生命体获取能量

网友点评网友点评
阅读推荐阅读推荐

据国外媒体报道,在过去两年内,聊天机器人(chatbot)、人工智能以及机器学习的研发和采用取得了巨大进展。许多初创公司正利用人工智能和...

霍金 视觉中国 图 英国著名物理学家霍金(Stephen Hawking)再次就人工智能(AI)发声,他认为:对于人类来说,强大AI的出现可能是最美妙的...

文|郑娟娟 今年,人工智能(AI) 60岁了。在AI60岁的时候,笔者想要介绍一下AI100,一个刚刚2岁的研究项目,但它的预设寿命是100年,甚至更长...

AlphaGo与李世石的人机大战,为大众迅速普及了人工智能的概念。 但对谷歌而言,除了下围棋,现在的人工智能进展到哪一步了?未来,人工智能...