你的公式如果是固定的话
那就多做几个textbox
然后让用户输入值
只要检测值的合法性就可以了
不用分析整个表达式

解决方案 »

  1.   

    trystring xxx="( 基本底薪 + 年资 + 奖金 - 食宿费 )/168*( 事假小时 + 病假小时 ) ";
    string[] yyy= System.Text.RegularExpressions.Regex.Split(xxx,@"\s*([(+-/*)])\s*");
    for(int i=0; i < yyy.Length; i++)
       Console.WriteLine("{0}:{1}", i, yyy[i]);
      

  2.   

    先replace,再split:
    string strValue="( 基本底薪 + 年资 + 奖金 - 食宿费 )/168*( 事假小时 + 病假小时 ) ";
    strValue.Replace("(","|(|");
    strValue.Replace(")","|)|");
    strValue.Replace("+","|+|");
    strValue.Replace("-","|-|");
    strValue.Replace("*","|*|");
    strValue.Replace("/","|/|");
    string[] strArrValue=strValue.Split('|');
    再把为空的strArrValue[i]去除掉!
      

  3.   

    思归的应该是分割成这样:基本底薪
    年资
    奖金
    食宿费
    168
    事假小时
    病假小时([\(+\-*/\)=]{1})|([^\(+\-*/\)=]+)
    这个则可以分割成这样:
    (
    基本底薪
    +
    年资
    +
    奖金
    -
    食宿费
    )
    /
    168
    *
    (
    事假小时
    +
    病假小时
    )不过要用Mathes来获取。
      

  4.   

    请试过再说,别乱猜测,输出F:\csharp>TestFormat
    0:
    1:(
    2:基本底薪
    3:+
    4:年资
    5:+
    6:奖金
    7:-
    8:食宿费
    9:)
    10:
    11:/
    12:168
    13:*
    14:
    15:(
    16:事假小时
    17:+
    18:病假小时
    19:)
    20:
      

  5.   

    trystring xxx="( 基本底薪 + 年资 + 奖金 - 食宿费 )/168*( 事假小时 + 病假小时 ) ";
    string[] yyy= System.Text.RegularExpressions.Regex.Split(xxx,@"\s*([(+-/*)])\s*");
    for(int i=0; i < yyy.Length; i++)
       Console.WriteLine("{0}:{1}", i, yyy[i]);
      

  6.   


    string xxx="( 基本底薪 + 年资 + 奖金 - 食宿费 )/168*( 事假小时 + 病假小时 ) ";Regex rex = new Regex(@"([(+-/*)]|[^(+-/*)\s]+)");
    MatchCollection mc = rex.Matches(xxx);
    string[] yyy = new string[mc.Count];
    for(int i=0; i < yyy.Length; i++)
    {
      yyy[i] = mc[i].Groups[1].Value;
      Console.WriteLine("{0}:{1}", i, yyy[i]);
    }
      

  7.   

    请试过再说,别乱猜测,输出F:\csharp>TestFormat
    0:
    1:(
    2:基本底薪
    3:+
    4:年资
    5:+
    6:奖金
    7:-
    8:食宿费
    9:)
    10:
    11:/
    12:168
    13:*
    14:
    15:(
    16:事假小时
    17:+
    18:病假小时
    19:)
    20:
    咦,这是怎么做到的?另外,我测试的时候"-"要转义,否则会报错啊。