2014-07-17 53 views
0

我想弄清楚從指數中拆分基數的方法。正則表達式拆分基數和指數

例如,

3^2 --->(3,2)

甲^ 3 --->(A,3)

甲^ B - - >(A,B)

甲^(B + 3)--->(A,B + 3)

我的當前假設如下:

基數和指數可以由'^'旁邊的括號(插入符號)或最接近的運算符之前/之前的字符來定義。

沿東西線(原諒僞代碼可怕的藉口)

// 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 ('+' || '-' || '/')} 

非常感謝

+1

你想製作一個計算器嗎? –

+0

@KunalB:給出OP的僞代碼似乎是這樣。 –

+2

我認爲這裏的正則表達式不是一個解決方案。你應該做一個語言解析器(閱讀字符char) –

回答

0

你可以簡單地使用功能拆分。所以:

var calculation = "4^3"; 
var splitted = calculation.split("^"); 
var base = splitted[0]; 
var exp = splitted[1]; 

如果我聽錯了,然後讓我知道:)

+0

感謝您的答案,但只能孤立工作 假設我們有3^4 + 3 * 2 我們想要的是功率(3,4)+ 3 * 2 =功率(3,4)+ 6 而不是功率(3,4 + 3 * 2) –

+0

我給你的例子提供瞭解決方案。但是,是的,這種方式不起作用,你需要使用正則表達式我想。 – Mainz007

0

請問像這樣的正則表達式是有用的?

var base = string.replace(/\^.*$/, ''); 
var exp = string.replace(/^.*\^/, ''); 

\^.*$一切爲尖的
^.*\^一切插入符的左右
https://eval.in/171423

+0

這是否會說明有括號的情況? 例如15 ^(5 + 3)會變成力量(15,5),而不是力量(15,5 + 3),對嗎? –

+0

base會變成15,exp會變成(5 + 3),查看更新後的鏈接。 – Kokkie

0

要拆分基地和指數,正則表達式,你需要的是

\s{0,}\^[\s]{0,}\({0,} 

Check-Demo

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)