一個簡單的計算四則運算表達式文本的方法

 

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;
}

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章