2

可能重复:
什么是快速 C 或 Objective-C 数学解析器?

我有一个创建一个将公式作为 NSString 的函数。而且我必须替换字符串中的一些东西并在执行公式后获取值。我怎样才能做到这一点...

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

现在我可以将 A 替换为 20,将 B 替换为 10。但是如何将 ((20/10)-1)*100 的计算值替换为 100

谢谢,本

4

4 回答 4

8

你必须建立表达式计算器。我知道的一个开源目标 C 库是GCMathParser

于 2012-09-19T17:58:41.060 回答
6

如果您的公式不是太复杂,您可以使用NSExpression

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

这甚至适用于某些功能,例如sqrt, exp, ... 请参阅NSExpression文档以获取支持的功能列表。

于 2012-09-19T18:14:51.377 回答
2

您将需要编写一个数学表达式解析器,它接受NSString *输入并产生数字输出。

于 2012-09-19T18:00:31.047 回答
0

您可以通过此方法替换字符

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

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

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

但是要计算 dat,你需要使用一些解析器来解析它。

于 2012-09-19T18:04:10.600 回答