求助:字符串(表达式)怎么转换成数学表达式?

月光易水 2002-12-13 09:34:46
各位仁兄,小生初次求助,帮帮忙,分不够可以加 :_)
例:
<%
n0 = 10
n1 = 1
n2 = 20
n3 = 3
n4 = 4
n5 = 5
n6 = "n1+n2"
n7 = "n6+n3"
n8 = 8
n9 = "n1+(n6*(n7-n5))+n2/((n8-n3)/n4+n0)"

' n9 = ?
%>

说明:
1. n6,n7,n9可都是字符串,n6,n7,n9的这个公式可以由用户随意定义的
2. 暂定用户只可以使用数学符号: "+","-","*","/","%/","(",")"
3. 用vb或asp实现
...全文
118 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
月光易水 2002-12-14
  • 打赏
  • 举报
回复
谢 bencalie(Bencalie)

本来以为vbscript不支持此功能呢,不曾想和class类似,不显性支持,但还是支持。
ok!测试通过,散分.

是否vbscript利用了Microsoft Script Control来实现这个功能,nt下是否支持?
bencalie 2002-12-14
  • 打赏
  • 举报
回复
Eval 函数
请参阅
Execute 语句
要求
版本5
计算一个表达式的值并返回结果。

[result = ]Eval(expression)
参数
result
可选项。是一个变量,用于接受返回的结果。如果未指定结果,应考虑使用 Execute 语句代替。
expression
必选项。可以是包含任何有效 VBScript 表达式的字符串。
说明
在 VBScript 中,x = y 可以有两种解释。第一种方式是赋值语句,将 y 的值赋予 x。第二种解释是测试 x 和 y 是否相等。如果相等,result 为 True;否则 result 为 False。Eval 方法总是采用第二种解释,而 Execute 语句总是采用第一种。

注意 在Microsoft® JScript™ 中不存在这种比较与赋值的混淆,因为赋值运算符 (=) 与比较运算符 (==) 不同。
下面的例子说明了 Eval 函数的用法:

Sub GuessANumber
Dim Guess, RndNum
RndNum = Int((100) * Rnd(1) + 1)
Guess = CInt(InputBox("Enter your guess:",,0))
Do
If Eval("Guess = RndNum") Then
MsgBox "祝贺你!猜对了!"
Exit Sub
Else
Guess = CInt(InputBox("对不起,请再试一次",,0))
End If
Loop Until Guess = 0
End Sub
aabiao 2002-12-14
  • 打赏
  • 举报
回复
服务器端的VBSCRIPT好像也有类似EVAL求表达式的函数,我忘了
月光易水 2002-12-14
  • 打赏
  • 举报
回复
To:annkie(爱已成歌)
JavaScript 可以在在客户端执行,小生也知道,但问题是客户懂点变成的话,就会修改JavaScript,因此需要在服务器端执行

To: fbj007(宝宝)
去掉引号就已经是数学表达式了 :(
用户随意定义公式,就是说n9这个字符串是由用户输入的

annkie 2002-12-13
  • 打赏
  • 举报
回复
use javascript!
<SCRIPT LANGUAGE="JavaScript">
<!--
n0 = 10
n1 = 1
n2 = 20
n3 = 3
n4 = 4
n5 = 5
str="n6=n1+n2"
eval(str);
alert(n6)
str="n7=n6+n3"
eval(str);
alert(n7)
n8=8
str="n9=n1+(n6*(n7-n5))+n2/((n8-n3)/n4+n0)"
eval(str);
alert(n9);
//-->
</SCRIPT>
fbj007 2002-12-13
  • 打赏
  • 举报
回复
将双引号去掉看看
<%
n0 = 10
n1 = 1
n2 = 20
n3 = 3
n4 = 4
n5 = 5
n6 = n1+n2
n7 = n6+n3
n8 = 8
n9 = n1+(n6*(n7-n5))+n2/((n8-n3)/n4+n0)

response.write n9
%>

你说用户随意,是随意到什么程度?
annkie 2002-12-13
  • 打赏
  • 举报
回复
try:

<script language=javascript>
.......
str="n9=n1+(n6*(n7-n5))+n2/((n8-n3)/n4+n0)"
eval(str);
</script>

28,390

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧