手机端上传待完善

思路: 将操作符按照优先级做处理,先获取最里面一层括号中的算式,拿到算式之后判断是否有乘除法,若有先计算乘除,用所得的值替换后再做加减法,无则直接计算加减。递归替换后拿到最终结果

举例说明

输入       输出

"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递归实现字符串计算器,包含+-*/()相关推荐

  1. js javascript 判断字符串是否包含某字符串,String对象中查找子字符,indexOf

    var Cts = "bblText";if(Cts.indexOf("Text") >= 0 ) {alert('Cts中包含Text字符串'); } ...

  2. js实现统计字符串长度包含中文英文特殊字符

    可以使用 JavaScript 的 length 属性来统计字符串的长度,但是这个属性只能统计英文字符和 ASCII 码字符的个数.对于中文字符,它的长度会被统计成 2. 如果想要正确地统计字符串中中 ...

  3. html 判断字符串相等,js/ajax判断字符串相等,包含

    jquery字符串相等判断 ------------------------------------------------------------------------------------- ...

  4. JS 判断一个字符串是否包含在一个数组中

    var arr = ["白色", "黑色", "红色", "粉色"];var sel = "黑色"; ...

  5. js 判断字符串是否包含某字符串

    2019独角兽企业重金招聘Python工程师标准>>> js 判断字符串是否包含某字符串,String对象中查找子字符,indexOf var Cts = "bblText ...

  6. js根据判断改变html字符串长度,JS获取字符串长度(包含汉字)的简单示例

    这篇文章主要为大家详细介绍了JS获取字符串长度(包含汉字)的简单示例,具有一定的参考价值,可以用来参考一下. 感兴趣的小伙伴,下面一起跟随512笔记的小编罗X来看看吧. 方法一: /** * * @p ...

  7. 通过js判断字符串是否包含某个字符串

    前言:有时候,我们在js中需要判断一个字符串中,是不是包含某个字符.可以采用以下方法进行判断. String对象的方法 方法一:indexOf() (推荐) var str = "123&q ...

  8. 【JS用法】js判断字符串是否包含某个字符串

    js判断字符串是否包含某个字符串 方法一:includes方法 //str.includes("")返回一个布尔值,值为true时表示包含var str = "hello ...

  9. js判断字符串是否为空_每日一课 | Python 如何判断一个字符串是否包含另一个字符串?...

    在Python中,我们可以使用in运算符或str.find()来检查一个字符串是否包含另一个字符串. 1.运算符 name = "mkyong is learning python 123& ...

最新文章

  1. 《城邦暴力团》:一部奇书、反书、隐书
  2. 102. 二叉树的层序遍历 golang
  3. Mybatis Plus配置以及单表操作
  4. QT信号(signal)和槽(slot)问题
  5. so easy 的弹出层——使用jquery
  6. 【Codeforces Global Round 2】A-E题解 【Frets On Fire、Pavel and Triangles】
  7. java 小票打印机和触发开钱箱操作
  8. 《算法导论》第三版第7章 快速排序 练习思考题 个人答案
  9. mysql索引失效的常见原因
  10. windows7家庭版,专业版,旗舰版,企业版版本区别
  11. Mac下驱动BCM20702A0 USB蓝牙
  12. Linux学习日记之初始用户管理
  13. OutputFormat数据输出
  14. 小红帽 oracle,Linux+5+红帽子企业版安装Oracle9
  15. git 常见错误 The remote end hung up unexpectedly
  16. ajax success 参数
  17. 怎样找回html里收藏的文件夹,电脑浏览器收藏的网址重装后如何找回
  18. 利用PHP编程生成蜘蛛访问记录txt文档
  19. 人机大战(类和对象)
  20. uniapp 来电显示悬浮窗插件(支持锁屏来电) Ba-CallerID

热门文章

  1. R9 7845HX参数 R97845HX核显怎么样 锐龙R97845HX相当于什么水平
  2. Visionpro工具用途中文介绍
  3. 2012网站服务器目录磁盘满了,服务器磁盘异常爆满的原因及解决方法
  4. 中国100句绝美爱情诗
  5. vue 中父子组件传递通信(看图就会了,皮卡皮卡)
  6. java判断数字大小写_java判断字符串是否全部由数字,大小写字母,特殊符号组成...
  7. 【Python 日志】
  8. 《环球》杂志|“宇宙级”漏洞过后,一个技术总裁的忠告……
  9. 史上20大计算机病毒
  10. 树与二叉树——由前序序列和中序序列确定一刻二叉树