js的eval()函数及其java实现(计算数学表达式)

概述:js的eval(str)可用于返回数学表达式的计算结果,但表达式的中括号“[”和“]”表示连接符,不像算术里面的“先小括号,后中括号”,花括号“{”不能被使用,

所以str的中括号和花括号都必须替换成对应的圆括号

java代码执行js:

  public static void main(String[] args) {
        ScriptEngineManager factory = new ScriptEngineManager();
        ScriptEngine engine = factory.getEngineByMimeType("text/javascript");
        String str1 = "12*3+[20/5*3-(7+Math.exp(1))]";
        String str2 = str1.replace("[", "(").replace("]", ")");
        try {
            System.out.println(engine.eval(str1));
            System.out.println(engine.eval(str2));
        } catch (ScriptException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

运行结果:

362.2817181715409554
38.28171817154096
时间: 2024-10-10 09:21:22

js的eval()函数及其java实现(计算数学表达式)的相关文章

Java 实现 JS的eval函数

JS的eval 函数, 给个表达式做参数, 返回表达式的值. Java的脚本引擎可以实现这个功能. 例子:   拼接一个字符串 \uxxxx, Unicode的十六进制编码, 然后把它打印出来. 即输入一个'\u5236' 字符串, 然后输出一个中文Unicode字符"制". package test; import javax.script.ScriptEngine;import javax.script.ScriptEngineManager;import javax.script

用js的eval函数模拟Web API中的onclick事件

在检查组内小伙伴提交的tabToggler插件的js代码时,发现了onclick的如下用法: el.onclick = function(){ //按钮样式切换 for(var i=0;i<obj.btns.length;i++){ obj.btns[i].classList.remove("current"); } this.classList.add("current"); //内容显示切换 for(var j = 0;j<obj.divs.leng

Javascript eval()函数 基础回顾

如果您想详细了解ev al和JSON请参考以下链接: eval  :https://developer.mozilla.org/En/Core_JavaScript_1.5_Reference/Global_Functions/Eval JSON:http://www.json.org/ eval函数的工作原理 eval函数会评估一个给定的含有JavaScript代码的字符串,并且试图去执行包含在字符串里的表达式或者一系列的合法的JavaScript语句.eval函数将把最后一个表达式或者语句所

js模版引擎开发实战以及对eval函数的改进

简介 前段时间,想着自己写一个简单的模版引擎,便于自己平时开发demo时使用,同时也算是之前学习的知识的一种总结吧! 首先我们先了解一下模版引擎的工作原理吧! 1. 模版引擎其实就是将指定标签的内容根据固定规则,解析为可执行语句字符串: 2. 执行可执行解析后的语句字符串,即生成我们想要的页面结构. 具体实现方法: 1. 最终效果 1 /* 解析前 2 <ul> 3 {{for(var i = 0; i < data.todos.length; ++i)}} 4 {{if(data.to

JS的全局函数eval解析JSON字符串函数

JavaScript eval() 函数 定义和用法 eval() 函数可计算某个字符串,并执行其中的的 JavaScript 代码. 语法 eval(string) 参数 描述 string 必需.要计算的字符串,其中含有要计算的 JavaScript 表达式或要执行的语句. 返回值 通过计算 string 得到的值(如果有的话). 说明 该方法只接受原始字符串作为参数,如果 string 参数不是原始字符串,那么该方法将不作任何改变地返回.因此请不要为 eval() 函数传递 String

js eval函数使用,js对象和字符串互转.

JavaScript eval() 函数  JavaScript 全局函数 定义和用法 eval() 函数计算 JavaScript 字符串,并把它作为脚本代码来执行. 如果参数是一个表达式,eval() 函数将执行表达式.如果参数是Javascript语句,eval()将执行 Javascript 语句. 语法 eval(string) 参数 描述 string 必需.要计算的字符串,其中含有要计算的 JavaScript 表达式或要执行的语句. <!DOCTYPE html> <ht

js eval()函数

定义和用法 eval() 函数可计算某个字符串,并执行其中的的 JavaScript 代码. 语法 eval(string); eval()函数接收一个参数s,如果s不是字符串,则直接返回s.否则执行s语句.如果s语句执行结果是一个值,则返回此值,否则返回undefined. 需要特别注意的是对象声明语法"{}"并不能返回一个值,需要用括号括起来才会返回值. 实际用法举例: 1.利用字符串创建变量: var abc=20; var i="ab"; alert(i+&

JS eval()函数的一些见解

一.eval是基本使用规则 1 eval() 函数可计算某个字符串,并执行其中的的 JavaScript 代码. 2 eval(string) 3 string必需.要计算的字符串,其中含有要计算的 JavaScript 表达式或要执行的语句. 4 eval()只有一个参数. 5 eval使用比较不安全,忘慎重使用 二.eval的错误使用方法 1 如果传入的参数不是字符串,它直接返回这个函数. 2 如果参数是字符串,它会把字符串当成JavaScript代码进行编译,如果编译失败者抛出一个语法错误

[转]JavaScript通过参数动态调用函数——js中eval实现反射

以下文章出自  http://blog.rongzhiwang.com/king/archive/2012/08/13/javascriptjseval.aspx 今天碰到人问这样一个问题:用jQuery做一个菜单,每次使用时传进去一个参数,这个参数是一个函数名,在菜单中怎么执行这个函数. 大概就这么个意思吧,当时听到就很熟悉的感觉,有的说为什么不用switch case,但是说实话有时候用判断确实不爽,好像自己之前也这样做过,但是真想不起来怎么实现的了.然后搜了一下,找到eval解决,决定记录