您的位置:首页 > 其它

一个计算四则运算表达式文本的方法

2014-06-04 18:23 423 查看
代码很简单 但是由自己慢慢思考出来的,所以还是有纪念价值

public function math(str:String):Number{
//如果格式化字符是数字   就返回这个数字
if(parseFloat(str).toString() == str && !isNaN(parseFloat(str))){
return parseFloat(str);
}

//判断括号  优先计算括号内  然后将计算结果再次代入字符串进行递归
var left:int;
var right:int;
while(str.indexOf("(") >= 0){
left = str.lastIndexOf("(");
right = str.indexOf(")",left);
str = str.substring(0,left) +
math(str.substring(left + 1,right)).toString() +
str.substring(right + 1 , str.length);
}

//判断运算符   由于运算优先  所以先进行   + - 分割    从而优先 运算  * /
var index:int;
if((index = str.indexOf("+")) >= 0){
return math(str.substring(0,index)) + math(str.substring(index + 1,str.length));
}else if((index = str.indexOf("-")) >= 0){
return math(str.substring(0,index)) - math(str.substring(index + 1,str.length));
}else if((index = str.indexOf("*")) >= 0){
return math(str.substring(0,index)) * math(str.substring(index + 1,str.length));
}else if((index = str.indexOf("/")) >= 0){
return math(str.substring(0,index)) / math(str.substring(index + 1,str.length));
}
//此处返回0是因为当字段内容既不存在 +-*/() 也不是数字的情况下   即递归的表达式类似 -1 分割出来的   "" - "1"  -> "0" - "1"
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: