大家好:求个算法与思路 
是个运算表达式:A+B+C+D-E-F…… 
几个运算是不确定的。想在表达式中提取出单独的变量。因为变量具体的值是在另一个表中的。 
例如提取后: 





谢谢bdmh:帮忙看看

解决方案 »

  1.   


    uses StrUtils;var
      Strs: TStringList;
      str: string;
    begin
      str := 'A+B+C+D-E-F';
      Strs := TStringList.Create;
      try
        str := AnsiReplaceStr(str, '+', ' ');
        str := AnsiReplaceStr(str, '-', ' ');
        Strs.Text := AnsiReplaceStr(str, ' ', #10);
        ShowMessage(Strs.Text);
      finally
        Strs.Free;
      end;
    end;
      

  2.   

    很感谢谢谢!
    不过不是我想要的结果。可能没有表达清楚。表达式:numZN+intSR+intXS-intZC-intGZ...
    我想循环一个一个的提取,及提取第一个变量numZN后再提起后面一个变量...。numZN+intSR+intXS-intZC-intGZ因为我需要将每个变量获取后,然后再到数据库表中去查找出对应的值相加减。类似FastReport字段表达式运算报表那种。字段是从几个表中取出的然后运算。我这里只考虑加减。
    思路:numZN+intSR+intXS-intZC-intGZ...应该替换成具体是数
    numZN=100(根据字段numZN从数据库中取出的)
    intSR=200(同样)
    intXS=300
    intZC=100
    intGZ=50
    结果:(100+200+300-100-50...)
      

  3.   

    很感谢谢谢!
    不过不是我想要的结果。可能没有表达清楚。表达式:numZN+intSR+intXS-intZC-intGZ...
    我想循环一个一个的提取,及提取第一个变量numZN后再提起后面一个变量...。numZN+intSR+intXS-intZC-intGZ因为我需要将每个变量获取后,然后再到数据库表中去查找出对应的值相加减。类似FastReport字段表达式运算报表那种。字段是从几个表中取出的然后运算。我这里只考虑加减。
    思路:numZN+intSR+intXS-intZC-intGZ...应该替换成具体是数
    numZN=100(根据字段numZN从数据库中取出的)
    intSR=200(同样)
    intXS=300
    intZC=100
    intGZ=50
    结果:(100+200+300-100-50...)
      

  4.   

    declare @s varchar(8000)
    set @s='numZN+intSR+intXS-intZC-intGZ'set @s='select '+@s+' from tb where ...'
    exec(@s)
      

  5.   

    to xinxinshou2009
    谢谢啊
    之所以来问,是想看看这个思路能不能解决。可能思路就错了。
    我的每个字段前面都有对应表名标识的。如:table1.Field1+table2.Field3-table3.Field2...,因为我的统计表达时时用户自己选择配置的。所以这里面表与字段都是一个变量。FastReport字段表达式有这个功能。看了半天没有看懂FastReport。哎