Detailed introduction to the sample code of the C# mathematical operation expression interpreter

黄舟
Release: 2017-03-13 17:48:12
Original
1910 people have browsed it

C#Mathematical operationsExpressionInterpreter


##Test file content:

a=2+3*2;
b=2*(2+3);
Copy after login

Browse button event handler:

<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>
Copy after login

Analyze a line of expression:

        private void analyse(string line)
        {
            //以分号作为结束符,支持一行内写多个语句
            string[] expA = line.Split(new string[] { ";" }, StringSplitOptions.RemoveEmptyEntries);
            for (int i = 0; i < expA.Length; i++)
            {
                analyseExpA(expA[i]);
            }
        }
Copy after login

Calculate an expression:


        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";
                    }
                }
            }
        }
Copy after login

The above is the detailed content of Detailed introduction to the sample code of the C# mathematical operation expression interpreter. For more information, please follow other related articles on the PHP Chinese website!

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template