用过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实现网络通信--vs2003,ASP.NET实现网络通信--vs2003
asp.net轻松实现中的分页 asp.net轻松实现中的分页 asp.net轻松实现中的分页 asp.net轻松实现中的分页 asp.net轻松实现中的分页 asp.net轻松实现中的分页 asp.net轻松实现中的分页 asp.net轻松实现中的分页 asp.net...
用ASP程序实现手机网页,获取“分享到朋友圈”按钮点击状态及自定义分享内容接口。通过asp实现以下数据:timestamp(时间戳)、access_token、jsapi_ticket、sha1加密、signature。
ASP.NET+SQL Server--轻松搭建论坛(精讲超值),教你一步一步搭建自己的论坛
返回页首实现策略为了解释如何在ASP.NET中实现Model-View-Controller模式,并说明在软件中分离模型、视图和控制器角色的好处,下面的示例将一个没有分离所有三个角色的单页面解决方案重构为分离这三个角色的解决方案...
在ASP.NET 2.0中操作数据:使用GridView 和DetailView实现的主-从报表
精通ASP.NET 2.0典型模块设计与实现-----RSS模块
在ASP中轻松实现记录集分页显示,超酷
用ASP.NET实现数据绑定控件--自定义分页
ASP.NET轻松实现验证码 小程序的小代码 ASP.NET轻松实现验证码 小程序的小代码 ASP.NET轻松实现验证码 小程序的小代码 ASP.NET轻松实现验证码 小程序的小代码
ASP.NET 2.0中轻松实现网站换肤 ASP.NET 2.0中轻松实现网站换肤
一个放在服务器上就可以查看ServerVariables的小工具。方便站长查看服务器变量值。
ASP.NET轻松实现验证码3种方法 ASP.NET轻松实现验证码3种方法 ASP.NET轻松实现验证码3种方法
在ASP.NET 2.0中操作数据:使用GridView 和DetailView实现的主-从报表(源码)
asp.net实现的基于uploadify-v3.1的文件批量上传, 带进度条
于基asp的在线学习平台的设计与实现---本科毕业设计.doc
asp无组件文件上传---下载不扣分,回帖加1分,欢迎下载,童叟无欺asp无组件文件上传---下载不扣分,回帖加1分,欢迎下载,童叟无欺asp无组件文件上传---下载不扣分,回帖加1分,欢迎下载,童叟无欺asp无组件文件上传...
使用Asp.net导出为Excel,并且实现多Sheet技术,XML技术。
【ASP.NET编程知识】ASP.NET中实现Form表单字段值自动填充到操作模型中.docx