String 将字符串转换为数学表达式.net/php不是库而是实际逻辑

String 将字符串转换为数学表达式.net/php不是库而是实际逻辑,string,math,logic,expression,String,Math,Logic,Expression,提供了一个字符串,如“y=1,x=2,w=x+y+1” 如何使.net或任何语言将其转换为数学表达式并进行计算 现在我更关心的是它背后的逻辑,而不是一个框架。 我的逻辑如下,但它仍然不完整。是否有更快或更好的方法可以帮助完成逻辑 伪代码: symbols[] = { "=","+" ... "-"} string a = "y = 1, x = 2, w = x + y +1"; a = a.replace(" ",""); highlevelsplit = a.split("="); fo

提供了一个字符串,如“y=1,x=2,w=x+y+1”

如何使.net或任何语言将其转换为数学表达式并进行计算

现在我更关心的是它背后的逻辑,而不是一个框架。
我的逻辑如下,但它仍然不完整。是否有更快或更好的方法可以帮助完成逻辑

伪代码:

symbols[] = { "=","+" ... "-"}
string a = "y = 1, x = 2, w = x +  y +1";
a = a.replace(" ","");
highlevelsplit = a.split("=");

for expr e in highlevelsplit 
{
   if(e.containts(=))
   {
      highlevelsplit[highlevelsplit.indexof(e)] = calc(highlevelsplit[highlevelsplit.indexof(e)+1]
   }     

}

function calc(string expr)
{
     array[] = expr.toCharArray();
     variables[][];
     var c;
     var currentVariable; 

     for int i=0; i<array.length-1; i++
     {
       c = array[i];
       if( symbols.containts(c) )
       {
          if( c.equals("+"))
          {

          }
             ....
       }
       else if ( c.notNumber && variables.containtsKey(c))
       {

       }
       else if ( Float.TryParse(c))
       {

       }
       else //probably a letter?
       {
          variables.push(c,0);
          currentVariable = c;
       }
}
}
symbols[]={“=”,“+”…-”}
字符串a=“y=1,x=2,w=x+y+1”;
a=a.替换(“,”);
highlevelsplit=a.split(“=”);
对于高级拆分中的expr e
{
如果(如包含(=))
{
highlevelsplit[highlevelsplit.indexof(e)]=计算(highlevelsplit[highlevelsplit.indexof(e)+1]
}     
}
函数计算(字符串表达式)
{
数组[]=expr.toCharArray();
变量[];
var c;
var电流变量;

对于int i=0;iSo,你想解析它吗?我想是这样的:P但不仅仅是x=1+2/3,更像是a=1 b=2 3x=5a+2b+2/3,如果这样做有任何困难的话,看起来你必须搜索如何解析表达式。有很多材料可以帮助你。
highlevelsplit=a.split(=”
对我来说没有意义。不应该“,”具有高于“=”的优先级?对,user829755。修剪输入字符串以删除空格,用逗号分割,并假设结果数组中的最后一个元素是要计算的表达式,解析其他元素以进行变量赋值并构建表达式。如果要对其进行泛化,则需要递归,但示例表明复杂性是不可忽略的另外,不要忘记按照操作顺序处理操作符(可能包括括号)。