js递归实现字符串计算器,包含+-*/()
手机端上传待完善
思路: 将操作符按照优先级做处理,先获取最里面一层括号中的算式,拿到算式之后判断是否有乘除法,若有先计算乘除,用所得的值替换后再做加减法,无则直接计算加减。递归替换后拿到最终结果
举例说明
输入 输出
"1+1" 2
" 6 - 4 / 2 " 4
"2*(5+5*2)/3+(6/2+8)" 21
"(2+6*3+5-(3*14/7+2)*5)+3" -12
characterCalculator(s) {
s = s.replace(/\s*/g,"")
if(s.indexOf('(') > -1 || s.indexOf(')')>-1){ var inter = this.getinter(s)
var news =s.replace(`(${inter})`,this.compute(inter)) return this.characterCalculator(news) } else { return this.compute(s) } }
getinter(s){ var result = s.match(/(\(+.+?\)+)/g)[0] var qu = result.slice(1,result.length-1) if(qu.indexOf('(') > -1 || qu.indexOf(')')>-1){ return this.getinter(qu) } return qu }
compute(s){ var news if(s.indexOf('*') >-1 || s.indexOf('/') >-1 ){ news = this.mul_dev(s)} else { news = s } var newARR = news.split("") newARR.unshift('+') var result = 0 var munlist = news.match(/(\d+)/g) for (let i = 0; i < munlist.length; i++) {const el = Number(newARR[2*i]+munlist[i]) result += el } return result }
mul_dev(s){ var news = s // 先获取 乘除 算式 var mulAndDivList = s.match(/(\d+[*|/]\d+)/g) mulAndDivList && mulAndDivList.length > 0 && mulAndDivList.forEach((el) => {
var a = el.match(/(\d+)/g)[0] var b = el.match(/(\d+)/g)[1]
if (el.indexOf('*') > -1) { news = news.replace(el, a*b) } else if (el.indexOf('/') > -1){ news = news.replace(el, Math.floor(a/b)) } })
if(news.indexOf('*') > -1 || news.indexOf('/') >-1 ){ return this.mul_dev(news) } return news }
js递归实现字符串计算器,包含+-*/()相关推荐
- js javascript 判断字符串是否包含某字符串,String对象中查找子字符,indexOf
var Cts = "bblText";if(Cts.indexOf("Text") >= 0 ) {alert('Cts中包含Text字符串'); } ...
- js实现统计字符串长度包含中文英文特殊字符
可以使用 JavaScript 的 length 属性来统计字符串的长度,但是这个属性只能统计英文字符和 ASCII 码字符的个数.对于中文字符,它的长度会被统计成 2. 如果想要正确地统计字符串中中 ...
- html 判断字符串相等,js/ajax判断字符串相等,包含
jquery字符串相等判断 ------------------------------------------------------------------------------------- ...
- JS 判断一个字符串是否包含在一个数组中
var arr = ["白色", "黑色", "红色", "粉色"];var sel = "黑色"; ...
- js 判断字符串是否包含某字符串
2019独角兽企业重金招聘Python工程师标准>>> js 判断字符串是否包含某字符串,String对象中查找子字符,indexOf var Cts = "bblText ...
- js根据判断改变html字符串长度,JS获取字符串长度(包含汉字)的简单示例
这篇文章主要为大家详细介绍了JS获取字符串长度(包含汉字)的简单示例,具有一定的参考价值,可以用来参考一下. 感兴趣的小伙伴,下面一起跟随512笔记的小编罗X来看看吧. 方法一: /** * * @p ...
- 通过js判断字符串是否包含某个字符串
前言:有时候,我们在js中需要判断一个字符串中,是不是包含某个字符.可以采用以下方法进行判断. String对象的方法 方法一:indexOf() (推荐) var str = "123&q ...
- 【JS用法】js判断字符串是否包含某个字符串
js判断字符串是否包含某个字符串 方法一:includes方法 //str.includes("")返回一个布尔值,值为true时表示包含var str = "hello ...
- js判断字符串是否为空_每日一课 | Python 如何判断一个字符串是否包含另一个字符串?...
在Python中,我们可以使用in运算符或str.find()来检查一个字符串是否包含另一个字符串. 1.运算符 name = "mkyong is learning python 123& ...
最新文章
- 《城邦暴力团》:一部奇书、反书、隐书
- 102. 二叉树的层序遍历 golang
- Mybatis Plus配置以及单表操作
- QT信号(signal)和槽(slot)问题
- so easy 的弹出层——使用jquery
- 【Codeforces Global Round 2】A-E题解 【Frets On Fire、Pavel and Triangles】
- java 小票打印机和触发开钱箱操作
- 《算法导论》第三版第7章 快速排序 练习思考题 个人答案
- mysql索引失效的常见原因
- windows7家庭版,专业版,旗舰版,企业版版本区别
- Mac下驱动BCM20702A0 USB蓝牙
- Linux学习日记之初始用户管理
- OutputFormat数据输出
- 小红帽 oracle,Linux+5+红帽子企业版安装Oracle9
- git 常见错误 The remote end hung up unexpectedly
- ajax success 参数
- 怎样找回html里收藏的文件夹,电脑浏览器收藏的网址重装后如何找回
- 利用PHP编程生成蜘蛛访问记录txt文档
- 人机大战(类和对象)
- uniapp 来电显示悬浮窗插件(支持锁屏来电) Ba-CallerID
热门文章
- R9 7845HX参数 R97845HX核显怎么样 锐龙R97845HX相当于什么水平
- Visionpro工具用途中文介绍
- 2012网站服务器目录磁盘满了,服务器磁盘异常爆满的原因及解决方法
- 中国100句绝美爱情诗
- vue 中父子组件传递通信(看图就会了,皮卡皮卡)
- java判断数字大小写_java判断字符串是否全部由数字,大小写字母,特殊符号组成...
- 【Python 日志】
- 《环球》杂志|“宇宙级”漏洞过后,一个技术总裁的忠告……
- 史上20大计算机病毒
- 树与二叉树——由前序序列和中序序列确定一刻二叉树