我有一个NSString的公式…如何评估它

可能重复:
什么是快速C或Objective-Cmathparsing器?

我有一个创build一个函数,将公式作为NSString。 而且我必须replacestring中的一些东西,并在执行公式之后获取值。 我怎样才能做到这一点…

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

现在我可以用A代替20,B代替10.但是如何得到((20/10)-1)* 100的计算值为100

谢谢,本

你可以用这个方法replace字符

NSString *formulaString = @"((A/B)-1)*100"; NSString *modifiedFormulaString = [formulaString stringByReplacingOccurrencesOfString:@"A" withString:@"10"]; modifiedFormulaString = [modifiedFormulaString stringByReplacingOccurrencesOfString:@"B" withString:@"10"]; 

但要计算dat你需要parsing它使用一些分析器。

你必须build立expression式计算器。 一个开源的C库我知道的是GCMathParser

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

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

即使对于某些函数(如sqrtexp ,…)也是NSExpression 。请参阅NSExpression文档以获取支持的函数列表。

您将需要编写一个mathexpression式分析器,它接受一个NSString *input并产生一个数字输出。