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

用过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 = "\{([\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中轻松实现变量名-值变换

时间: 2024-10-13 17:06:17

ASP中轻松实现变量名-值变换的相关文章

获取ACCESS数据库中自增变量的值

/// <summary> /// 获取自增变量值 /// </summary> /// <returns>自增变量值</returns> public int getReturnIdentity() { //Conn_Open(); string strCMDtext = @"select @@identity"; OleDbCommand cmd_sql = new OleDbCommand(strCMDtext, conn_1);

eclipse中debug改变变量的值

step1:debug断点到变量的下一行,在debug试图的右上角variables中看到该变量的值: step2:鼠标右键点击str出现下图,选择Change Value... step3:点击Change Value...   在其中输入自己想要的值,再点击OK确定. step4:继续F6,可以看到str的值已经被更改了.

汇编中标号与变量名的区别

转:blog.sina.com.cn/s/blog_78021ae10100vnwk.html 当程序中要跳转到另一位置时,需要有一个标识来指示新的位置,这就是标号,通过在目标地址的前面放上一个标号,可以在指令中使用标号来代替直接使用地址. 使用变量是任何编程语言都要遇到的工作.变量是计算机内存中已命名的存储位置,在大部分的语言中都有很多种类的变量,如整数型.浮点型和字符串等,不同的变量有不同的用途和尺寸,比如说虽然长整数和单精度浮点数都是32位长,但它们的用途不同. 顾名思义,变量的值在程序运

ASP中使用Session变量的优缺点

许多人利用Session变量来开发ASP(Active Server Pages).这些变量与任何编程语言中通用的变量非常相似,并且具有和通用变量一样的优点和缺陷.任何命令都需要运行时间和存储空间(甚至GOTO’s语句如此),Session变量同样需要自己的运行时间和存储空间.过多地使用Session变量就会导致无法代码冗余,并且使服务器运行成本提高下面是我个人使用Session变量的一些主要观点和心得体会. 优点 如果要在诸多Web页间传递一个变量,那么用Session变量要比通过QueryS

解决ambiguous symbol命名空间中类名、变量名冲突的问题

最近在将一个复杂的工程集成到现有的项目中.编译时发现,有的变量名冲突了,提示就是xxxx ambiguous symbol,并且在编译输出时,指明了两个文件当中特定的变量名或者类名相同.出现这个编译错误的原因是,在工程中加载了两个头文件,这两个头文件中包含相同的类名或者变量名,解决及避免出现此类错误的方法如下: 代码库尽量包含在一个命名空间中.在我们写一个大的程序时,一些变量可能会与其他工程造成重名,所以加命名空间是很有必要的:另外,在自己的代码库中命名的类名变量名尽量以代码库的名称开头,这样大

c#中@开头的变量名

在 C#  规范中, @  可以作为标识符(类名.变量名.方法名等)的第一个字符,以允许C# 中保留关键字作为自己定义的标识符.如 class @class { public static void @static(bool @bool) { if (@bool) System.Console.WriteLine("true"); else System.Console.WriteLine("false"); } } class Class1 { static vo

js中,var 修饰变量名和不修饰的区别

js中 允许在定义变量的时候 不加var 修饰符.js会在当前作用域下寻找上下文是否定义了此变量, 如果没有找到则会为这个变量分配内存.当且将其视为window的成员. 也就是全局变量. 如果加了var 修饰符. js会重新为这个变量分配内存,不论当前上下文中是否已经定义过了.这个变量的作用域就为当前上下文. 即局部变量. 不加var的写法是强烈不推荐的.1. 语义不清楚. 2. 团队开发时,容易覆盖掉其它作用域内的变量,引发异常.3. 给window对象添加不必要成员. 等等

机器学习中常用的变量名

batchsize:中文翻译为批大小(批尺寸).在深度学习中,一般采用SGD训练,即每次训练在训练集中取batchsize个样本训练: iteration:中文翻译为迭代,1个iteration等于使用batchsize个样本训练一次:一个迭代 = 一个正向通过+一个反向通过 epoch:迭代次数,1个epoch等于使用训练集中的全部样本训练一次:一个epoch = 所有训练样本的一个正向传递和一个反向传递 原文地址:https://www.cnblogs.com/keyshaw/p/11031

shell语法—shell 中特殊的变量名

现在我们新建一个demo1.sh 脚本文件,代码如图 chomd +x demo1.sh   给脚本执行权限. 我们在命令行输入 让我们来看下执行的结果 大家可以自己写一个脚本执行 试试,有什么问题,欢迎大家指出,让我们共同进步!