我对正则表达式和JS都比较陌生(之前使用的是Python),所以这可能是一个简单的问题:我正在尝试在Javascript中编写代数计算器,它将接收一个代数方程作为字符串,例如:
string = 'x^2 + 30x -12 = 4x^2 - 12x + 30';
该算法已经能够将字符串拆分成一个单独的列表,其中右侧所有值乘以-1以使其等于0。然而,解决该方程的其中一步涉及创建一个hashtable/dictionary,以变量作为键。 上面的字符串结果为一个列表eq:
eq = ['x^2','+30x','-12','-4x^2','+12x','-30'];
我当前计划通过迭代此列表,并使用RegExp来识别变量和相应的乘数,以创建一个Hashtable/Dictionary,从而允许我简化方程,如下所示:
string = 'x^2 + 30x -12 = 4x^2 - 12x + 30';
该算法已经能够将字符串拆分成一个单独的列表,其中右侧所有值乘以-1以使其等于0。然而,解决该方程的其中一步涉及创建一个hashtable/dictionary,以变量作为键。 上面的字符串结果为一个列表eq:
eq = ['x^2','+30x','-12','-4x^2','+12x','-30'];
我当前计划通过迭代此列表,并使用RegExp来识别变量和相应的乘数,以创建一个Hashtable/Dictionary,从而允许我简化方程,如下所示:
hashTable = {
'x^2': [1, -4],
'x': [30, 12],
' ': [-12]
}
我打算使用某种for循环来遍历数组,并对每个字符串应用匹配来获取所需的值,但是坦白地说,我被难住了。
我已经使用RegExp将字符串分离成方程式的各个部分并删除空格,但我想不出一种方法将-4
与x^2
在'-4x^2'
中分开。