测试文件内容:
a=2+3*2; b=2*(2+3);
浏览按钮事件处理程序:
<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>
分析一行表达式:
private void analyse(string line) { //以分号作为结束符,支持一行内写多个语句 string[] expA = line.Split(new string[] { ";" }, StringSplitOptions.RemoveEmptyEntries); for (int i = 0; i < expA.Length; i++) { analyseExpA(expA[i]); } }
计算一条表达式:
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"; } } } }
Atas ialah kandungan terperinci 详细介绍C#数学运算表达式解释器的示例代码. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!