2012-09-19 16 views
2

可能重複:
What is a fast C or Objective-C math parser?我有一個NSString的公式...如何評價它

我有一個創建一個函數,它接受一個公式作爲的NSString。我必須在字符串中替換一些東西,並在執行公式後獲取值。我怎樣才能做到這一點...

例如:NSString * formulaString = @「((A/B)-1)* 100」;

現在我可以通過10 20取代A和B,而如何將得到的計算值是((20/10)-1)* 100 100

感謝, 本

+0

http://stackoverflow.com/questions/6809927/objective-c-how-to-convert-a-string-with-mathematical-expressions-into-a-float?lq=1 – 2012-09-19 18:05:16

+1

這是你放的地方使用所有關於解析你的東西本應該在你今年夏天入睡的課程中學到。 –

回答

0

您可以通過這種方法

NSString *formulaString = @"((A/B)-1)*100"; 

NSString *modifiedFormulaString = [formulaString stringByReplacingOccurrencesOfString:@"A" withString:@"10"]; 

modifiedFormulaString = [modifiedFormulaString stringByReplacingOccurrencesOfString:@"B" withString:@"10"]; 

替換字符,但計算DAT u需要使用一些解析器解析它。

8

你必須建立表達式計算器。我知道的一個開源客觀C庫是GCMathParser

+2

另外值得注意的是優秀的[DDMathParser](https://github.com/davedelong/DDMathParser)庫。 – JustSid

+0

非常感謝MSK ... – Ben861305

+0

樂意幫忙:) – msk

2

您需要編寫一個數學表達式分析器,它需要一個NSString *輸入併產生一個數字輸出。

6

如果你的公式是不是太複雜,你可以使用NSExpression

NSExpression *e = [NSExpression expressionWithFormat:@"((20/10)-1)*100"]; 
NSNumber *result = [e expressionValueWithObject:nil context:nil]; 
NSLog(@"%@", result); 
// Output: 100 

這個工程即使有一些功能,如sqrtexp,...支持的功能的列表,請參閱NSExpression文檔。

相關問題