使用javascript拆分算术运算符

时间:2017-02-18 23:35:19

标签: javascript

如何分割,例如2 + 2,1-1,2 * 1,3 / 1,甚至是2 + -1 a等负片?我能够分割一个操作员而不是其他操作员。

1 个答案:

答案 0 :(得分:1)

我首先删除任何空格,然后使用与操作数匹配的正则表达式,可能类似于/(-?\d+)(\+|\*|\/|-|<<|>>)(-?\d+)/。使用.match()调用,并通过测试确保字符串匹配,您最终得到的结果如下:

function parseItUp(str) {
  var result = str.replace(/\s/g,'').match(/(-?\d+)(\+|\*|\/|-|<<|>>)(-?\d+)/)
  return result ? result.splice(1) : null
}

console.log(JSON.stringify( parseItUp("2 + 3") ))
console.log(JSON.stringify( parseItUp("2 / -3") ))
console.log(JSON.stringify( parseItUp("-2 * 3") ))
console.log(JSON.stringify( parseItUp("2 - 3") ))
console.log(JSON.stringify( parseItUp("2 - -3") ))
console.log(JSON.stringify( parseItUp("2 << -3") ))
console.log(JSON.stringify( parseItUp("2 >> -3") ))
console.log(JSON.stringify( parseItUp("2 3") ))    // returns null because there's no operator

.splice(1)的调用是省略数组中的第一项,即整个匹配的字符串。

JSON.stringify()仅用于在不滚动的情况下轻松读取控制台输出。)

请注意,这个正则表达式可能会扩展到处理两个以上的操作数,但我会将其作为读者的练习...