详细介绍C#数学运算表达式解释器的示例代码


当前第2页 返回上一页

测试文件内容:

1

2

a=2+3*2;

b=2*(2+3);

浏览按钮事件处理程序:

1

<p style="margin-bottom: 7px;">        private void button_browse_Click(<a href="http://www.php.cn/wiki/60.html" target="_blank">object</a> s<a href="http://www.php.cn/wiki/1048.html" target="_blank">end</a>er, EventArgs e)<br>        {<br>            Open<a href="http://www.php.cn/wiki/1313.html" target="_blank">File</a>Dialog fbd = <a href="http://www.php.cn/wiki/165.html" target="_blank">new</a> OpenFileDialog();<br>            fbd.Title = "请选择一个文件:";<br>            fbd.CheckFileExists = true;<br>            fbd.CheckPathExists = true;<br>            fbd.Filter = "*.txt(文本文件)|*.txt|*.*(所有文件)|*.*";<br>            fbd.FileName = Environment.GetFolderPath(Environment.SpecialFolder.MyComputer);<br>            <a href="http://www.php.cn/wiki/109.html" target="_blank">if</a> (fbd.ShowDialog() == System.Windows.<a href="http://www.php.cn/wiki/125.html" target="_blank">For</a>ms.DialogResult.OK)<br>            {<br>                textBox_save<a href="http://www.php.cn/wiki/1275.html" target="_blank">Dir</a>.Text = fbd.FileName;<br>                try<br>                {<br>                    FileStream fs = new FileStream(fbd.FileName, FileMode.Open, FileAccess.Read);<br>                    StreamReader sr = new StreamReader(fs);<br>                    <a href="http://www.php.cn/wiki/121.html" target="_blank">while</a> (!sr.EndOfStream)<br>                    {<br>                        <a href="http://www.php.cn/wiki/57.html" target="_blank">string</a> line = sr.<a href="http://www.php.cn/wiki/691.html" target="_blank">ReadLine</a>();<br>                        analyse(line);<br>                    }<br>                }<br>                catch (<a href="http://www.php.cn/wiki/265.html" target="_blank">Exception</a> ex)<br>                {<br>                    MessageBox.Show("错误:" + ex.Message + "\r\n堆栈:" + ex.StackTrace);<br>                }<br>            }<br>        }<br></p>

分析一行表达式:

1

2

3

4

5

6

7

8

9

private void analyse(string line)

{

    //以分号作为结束符,支持一行内写多个语句

    string[] expA = line.Split(new string[] { ";" }, StringSplitOptions.RemoveEmptyEntries);

    for (int i = 0; i < expA.Length; i++)

    {

        analyseExpA(expA[i]);

    }

}

计算一条表达式:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

private void analyseExpA(string expA)

{

    string[] expB = expA.Split(new string[] { "=" }, StringSplitOptions.RemoveEmptyEntries);

    for (int i = 0; i < expB.Length; i++ )

    {

        Regex reg = new Regex("[a-zA-Z]");

        if (!reg.IsMatch(expB[i]))

        {

            object obj = EvalExpress(expB[i]);

            if (obj != null)

            {

                textBox1.Text += expA + " = " + obj.ToString() + "\r\n";

            }

            else

            {

                textBox1.Text += expA + ",无法识别的表达式\r\n";

            }

        }

    }

}

以上就是详细介绍C#数学运算表达式解释器的示例代码的详细内容!

返回前面的内容

相关阅读 >>

c#中var和dynamic之间的区别是什么?

什么是C#中的多态性?

详细介绍C#时间戳和js时间戳互转方法的代码分享

C#网络编程的图文代码详解

C#开发实例-订制屏幕截图工具(五)针对拖拽时闪烁卡顿的优化

C#将unicode编码转换为汉字字符串的代码分析

页面包含处理实例详解

C# 清除html标签标记

C#开发之微信小程序发送模板消息功能

详细介绍C#实例化接口对象的方法

更多相关阅读请进入《C#》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...