ICANN认证国际域名顶级注册机构
网站建设,域名注册,空间租用,软件销售,广告设计 域名注册,空间租用, 网站建设,东莞网页设计,域名注册,网站推广,网站开发,网页设计 网站推广,,百度推广,新浪推广,雅虎推广,网易推广 标志设计,画册设计,包装设计,VI策划,企业形象顾问 连邦软件加盟店,提供销遥行,管家婆,速达,用友ERP,诺顿等软件报价及销售 建站必读 腾达网络,上网帮助中心, 腾达为东莞等地,提供网站建设,网站推广,广告设计,软件销售等优质服务!
建站必读


 
 
当前位置:首页 -> 建站必读 -> .NET技术
.Net下的算术表达式解析器的实现思路与源码
作为程序设计人员经常会遇到这样的情况,需要将某个指定的字符串表达式转换为算术表达式并计算其结果.使用Delphi的朋友可以在网上获取第三方控件来实现,而.Net框架类库并没有相关的处理类,正好在前不久的给一所大学开发的Web应用中也需要实现相关的处理.就抽空写了一个相关的处理类(实现了大部分的算术运算操作,需要其他运算可以在现有基础上扩展),现将部分代码贴出共大家参考,希望能够在交流中进步、互助中学习、探讨中深入:



//EnumExpress



using System;



namespace ExpressionTest

{

/// <summary>

/// EnumExpress 的摘要说明。

/// </summary>

public enum EnumExpress

{

Add,//加号

Dec,//减号

Mul,//乘号

Div,//除号

Sin,//正玄

Cos,//余玄

Tan,//正切

ATan,//余切

Sqrt,//平方根

Pow,//求幂

None,//无

}

}





//ExpressDeal



using System;



namespace ExpressionTest

{

/// <summary>

/// ExpressDeal 的摘要说明。

/// </summary>

public class ExpressDeal

{

static ExpressDeal()

{



}

private double CalculateExpress(string strExpression)

{



string strTemp="";

string strTempB="";

string strOne="";

string strTwo="";

double ReplaceValue=0;

while (strExpression.IndexOf("+")!=-1 || strExpression.IndexOf("-")!=-1

|| strExpression.IndexOf("*")!=-1 || strExpression.IndexOf("/")!=-1)

{

if (strExpression.IndexOf("*")!=-1)

{

strTemp=strExpression.Substring(strExpression.IndexOf("*")+1,strExpression.Length-strExpression.IndexOf("*")-1);

strTempB=strExpression.Substring(0,strExpression.IndexOf("*"));



strOne=strTempB.Substring(GetPrivorPos(strTempB)+1,strTempB.Length-GetPrivorPos(strTempB)-1);



strTwo=strTemp.Substring(0,GetNextPos(strTemp));



ReplaceValue=Convert.ToDouble(GetExpType(strOne))*Convert.ToDouble(GetExpType(strTwo));



strExpression=strExpression.Replace(strOne+"*"+strTwo,ReplaceValue.ToString());

}

else if (strExpression.IndexOf("/")!=-1)

{

strTemp=strExpression.Substring(strExpression.IndexOf("/")+1,strExpression.Length-strExpression.IndexOf("/")-1);

strTempB=strExpression.Substring(0,strExpression.IndexOf("/"));



strOne=strTempB.Substring(GetPrivorPos(strTempB)+1,strTempB.Length-GetPrivorPos(strTempB)-1);





strTwo=strTemp.Substring(0,GetNextPos(strTemp));





ReplaceValue=Convert.ToDouble(GetExpType(strOne))/Convert.ToDouble(GetExpType(strTwo));



strExpression=strExpression.Replace(strOne+"/"+strTwo,ReplaceValue.ToString());

}

else if (strExpression.IndexOf("+")!=-1)

{

strTemp=strExpression.Substring(strExpression.IndexOf("+")+1,strExpression.Length-strExpression.IndexOf("+")-1);

strTempB=strExpression.Substring(0,strExpression.IndexOf("+"));



strOne=strTempB.Substring(GetPrivorPos(strTempB)+1,strTempB.Length-GetPrivorPos(strTempB)-1);



strTwo=strTemp.Substring(0,GetNextPos(strTemp));



ReplaceValue=Convert.ToDouble(GetExpType(strOne))+Convert.ToDouble(GetExpType(strTwo));



strExpression=strExpression.Replace(strOne+"+"+strTwo,ReplaceValue.ToString());

}

else if (strExpression.IndexOf("-")!=-1)

{

strTemp=strExpression.Substring(strExpression.IndexOf("-")+1,strExpression.Length-strExpression.IndexOf("-")-1);

strTempB=strExpression.Substring(0,strExpression.IndexOf("-"));



strOne=strTempB.Substring(GetPrivorPos(strTempB)+1,strTempB.Length-GetPrivorPos(strTempB)-1);





strTwo=strTemp.Substring(0,GetNextPos(strTemp));



ReplaceV
 
 
本站关键词:
|东莞建站服务|东莞商标设计|东莞商标注册|东莞yahoo推广|东莞网络实名|东莞百度baidu推广|东莞google推广|东莞关键词推广|东莞网站推广策划|东莞域名申请|东莞主机申请|东莞空间申请||东莞建站服务|东莞商标设计|东莞商标注册|东莞yahoo推广|东莞网络实名|东莞百度baidu推广|东莞google推广|东莞关键词推广|东莞网站推广策划|东莞域名申请|东莞主机申请|东莞空间申请||东莞建站服务|东莞商标设计|东莞商标注册|东莞yahoo推广|东莞网络实名|东莞百度baidu推广|东莞google推广|东莞关键词推广|东莞网站推广策划|东莞域名申请|东莞主机申请|东莞空间申请||东莞建站服务|东莞商标设计|东莞商标注册|东莞yahoo推广|东莞网络实名|东莞百度baidu推广|东莞google推广|东莞关键词推广|东莞网站推广策划|东莞域名申请|东莞主机申请|东莞空间申请||东莞建站服务|东莞商标设计|东莞商标注册|东莞yahoo推广|东莞网络实名|东莞百度baidu推广|东莞google推广|东莞关键词推广|东莞网站推广策划|东莞域名申请|东莞主机申请|东莞空间申请||东莞建站服务|东莞商标设计|东莞商标注册|东莞yahoo推广|东莞网络实名|东莞百度baidu推广|东莞google推广|东莞关键词推广|东莞网站推广策划|东莞域名申请|东莞主机申请|东莞空间申请||东莞建站服务|东莞商标设计|东莞商标注册|东莞yahoo推广|东莞网络实名|东莞百度baidu推广|东莞google推广|东莞关键词推广|东莞网站推广策划|东莞域名申请|东莞主机申请|东莞空间申请||东莞建站服务|东莞商标设计|东莞商标注册|东莞yahoo推广|东莞网络实名|东莞百度baidu推广|东莞google推广|东莞关键词推广|东莞网站推广策划|东莞域名申请|东莞主机申请|东莞空间申请||东莞建站服务|东莞商标设计|东莞商标注册|东莞yahoo推广|东莞网络实名|东莞百度baidu推广|东莞google推广|东莞关键词推广|东莞网站推广策划|东莞域名申请|东莞主机申请|东莞空间申请||东莞建站服务|东莞商标设计|东莞商标注册|东莞yahoo推广|东莞网络实名|东莞百度baidu推广|东莞google推广|东莞关键词推广|东莞网站推广策划|东莞域名申请|东莞主机申请|东莞空间申请||东莞建站服务|东莞商标设计|东莞商标注册|东莞yahoo推广|东莞网络实名|东莞百度baidu推广|东莞google推广|东莞关键词推广|东莞网站推广策划|东莞域名申请|东莞主机申请|东莞空间申请||东莞建站服务|东莞商标设计|东莞商标注册|东莞yahoo推广|东莞网络实名|东莞百度baidu推广|东莞google推广|东莞关键词推广|东莞网站推广策划|东莞域名申请|东莞主机申请|东莞空间申请||东莞建站服务|东莞商标设计|东莞商标注册|东莞yahoo推广|东莞网络实名|东莞百度baidu推广|东莞google推广|东莞关键词推广|东莞网站推广策划|东莞域名申请|东莞主机申请|东莞空间申请||东莞建站服务|东莞商标设计|东莞商标注册|东莞yahoo推广|东莞网络实名|东莞百度baidu推广|东莞google推广|东莞关键词推广|东莞网站推广策划|东莞域名申请|东莞主机申请|东莞空间申请|
域名注册 | 虚拟主机 | 网站建设 | 网站推广 | 广告设计 | 帮助中心 | 软件中心 | 关于腾达
东莞市腾达信息工程有限公司      本站网络实名: 东莞网站建设
地址:东莞市新城市中心区第一国际B座610   邮编:523007
电话:0769-22026071 22026072 传真:0769-22026076 24小时服务热线:13712032014
© 2002~2005 腾达网络   版权所有