C#数学运算表达式解释器
测试文件内容:
a=2+3*2;
b=2*(2+3);
浏览按钮事件处理程序:
private void button_browse_Click(object sender, EventArgs e)
{
OpenFileDialog fbd = new OpenFileDialog();
fbd.Title = "请选择一个文件:";
fbd.CheckFileExists = true;
fbd.CheckPathExists = true;
fbd.Filter = "*.txt(文本文件)|*.txt|*.*(所有文件)|*.*";
fbd.FileName = Environment.GetFolderPath(Environment.SpecialFolder.MyComputer);
if (fbd.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
textBox_saveDir.Text = fbd.FileName;
try
{
FileStream fs = new FileStream(fbd.FileName, FileMode.Open, FileAccess.Read);
StreamReader sr = new StreamReader(fs);
while (!sr.EndOfStream)
{
string line = sr.ReadLine();
analyse(line);
}
}
catch (Exception ex)
{
MessageBox.Show("错误:" + ex.Message + "\r\n堆栈:" + ex.StackTrace);
}
}
}
分析一行表达式:
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";
}
}
}
}
源码下载:C#数学运算表达式解释器源码
分享到:
相关推荐
C#数学运算表达式解释器,参考:http://blog.csdn.net/testcs_dn/article/details/37776937
用C#编写的算术表达式解释器。能对算术表达式进行解释运算,运行结果: 13+23+3*(40+5)=171 13+2+3*(4+5*(2+2))=87 23*2+3*(4+5)=73 可解释不同长度的括号嵌套。 支持运算中的符号符为+,-,*,/,(,) 注:如果需要添加...
实现+、-、*、/、%、<、>、=、、、>= 详细信息查看如下地址: http://blog.csdn.net/welliu/archive/2011/04/13/6320562.aspx
WinForm Cron表达式生成器 Quartz.Net Cron表达式生成器winform版 最近使用Quartz.net做了几个同步任务,感觉非常好。表达式设置也是非常灵活,但是新入手发现对表达式不熟,每次都要使用在线生成器。 于是写...
c#使用正则表达式验证身份证号码,工程完全可以运行,方便大家参考和学习
c# 数学表达式 字符串 解析 封装类 用于解析从文件读取的数学表达式字符串非常方便
一个表达式字符串,例如“1+2*3”这样的表达式,C#中实现求取表达式的值。
对四则混合运算做了些扩展,增加了关键字,表达式最终还是返回一个运算值。 支持操作数:int、double、bool、datetime、string 支持关键字:IF、AND、OR、NOT、TRUE、FALSE、ToString、ToDateTime、ToInt、ToDouble...
一个C#实现的简单表达式解析器,支持算符优先级、括号以及函数。 修正前一个上传版本存在的问题:算符优先级的错误。
c#的正则表达式c#的正则表达式c#的正则表达式
但限于本人水平有限,仅仅实现了基本的四则运算表达式的求解。 此外,本软件仍有许多错误、不足之处,尤其是输入表达式时,请严格按照规定的格式(详见格式说明)书写。虽然本计算器有基本的格式错误提示功能,但...
C# 正则表达式 集合 C# 正则表达式 集合 C# 正则表达式 集合
C#将Lambda表达式转成Sql语句,根据自己看的文章手写出来的,并配有自己理解的注释,有需要的同学可以自行下载。
一组C#实现的算术、关系、逻辑与函数等的表达式解析与计算类TExprParser(V1.5)及测试exe程序,可以使用{n}占位符参数等,并提供详细的错误解析提示。具体使用参考http://blog.csdn.net/hulihui。测试程序需要.net ...
C#正则表达式练习器
动态快车 可用平台:.NET Core 2.0、.NET 4.5、.NET 4.6.1 Dynamic Expresso 是用 .NET Standard 2.0 编写的简单 C# 语句的解释器。 Dynamic Expresso 嵌入了自己的解析逻辑,通过将其转换为 .NET lambda 表达式或...
C#,VS2010,利用正则表达式验证网址(url),
正则表达式测试工具C#完整源码,包括查找和替换功能,标注显示匹配结果。
文件中包含两个项目,一个是程序的运行界面,另外一个是实现功能的动态链接库。
C# 正则表达式测试器 C# 正则表达式测试器 C# 正则表达式测试器 C# 正则表达式测试器