我试图找出一种从指数中分离基数的方法。
例如,
3 ^ 2 ---> (3,2)
A ^ 3 ---> (A,3)
A ^ B ---> (A,B)
A ^(B + 3)---> (A,B + 3)
我目前的假设如下:
Base和exponent由' ^'旁边的括号之间的表达式定义。 (插入符号),或最近操作符之后/之前的字符。
有些事情(原谅伪代码的可怕借口)
// base:
if (parenthesis before caret) {base = characters between parenthesis}
else {base = characters after previous ('+' || '-' || '/')}
// exponent:
if (parenthesis after caret) {exponent = characters between parenthesis}
else {exponent = characters before following ('+' || '-' || '/')}
非常感谢
答案 0 :(得分:0)
您可以简单地使用功能拆分。所以:
var calculation = "4^3";
var splitted = calculation.split("^");
var base = splitted[0];
var exp = splitted[1];
如果我弄错了,请告诉我:)
答案 1 :(得分:0)
像这样的正则表达式会有用吗?
var base = string.replace(/\^.*$/, '');
var exp = string.replace(/^.*\^/, '');
\^.*$
插入符号右侧的所有内容
^.*\^
插入符号左侧的所有内容
见https://eval.in/171423
答案 2 :(得分:0)
要分割基数和指数,您需要的是RegEx
\s{0,}\^[\s]{0,}\({0,}
var expStr = 'A^(B+25)';
var res = expStr.split(/\s{0,}\^[\s]{0,}\({0,}/).join(",").split(")").join("")
var converted = "(" + res + ")"
console.log(converted)
//(A,B+25)
//input - '3 ^ 2'
//output - (3,2)
//input - A ^ B
//output - (A,B)